You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.2 KiB

H5端地图显示说明

当前状态

目前H5端使用的是列表形式显示点位,点击点位可以跳转到腾讯地图进行导航。

uni-app map组件在H5端的支持情况

可以直接使用! uni-app的<map>组件在H5端是支持的但需要注意

  1. 默认使用高德地图 - uni-app的map组件在H5端默认使用高德地图服务
  2. 需要配置高德地图Key - 必须在manifest.json中配置高德地图的Web端API Key
  3. 功能限制 - 某些小程序特有的功能如cover-view在H5端不支持

如果要显示真正的地图,有以下方案:

方案一使用uni-app的map组件 + 高德地图(最简单)推荐

优点:

  • 代码改动最小
  • 与小程序端代码统一
  • uni-app官方支持

缺点:

  • 需要使用高德地图(不是腾讯地图)
  • 某些高级功能可能受限

配置步骤:

  1. 申请高德地图Web端API Key

  2. 配置manifest.json

    {
      "h5": {
        "sdkConfigs": {
          "maps": {
            "amap": {
              "webKey": "你的高德地图Web端API Key"
            }
          }
        }
      }
    }
    
  3. 修改pages/home/home.vue

    • 移除H5端的条件编译#ifndef H5
    • 让map组件在H5端也显示
    • 注意cover-view在H5端不支持需要改为普通view

示例代码:

<template>
  <view class="maps">
    <!-- 移除 #ifndef H5让map组件在H5端也显示 -->
    <map 
      id="myMap" 
      :longitude="lng" 
      :latitude="lat" 
      :markers="markers"
      :scale="scale"
      show-location
      @markertap="showDetail"
    >
      <!-- H5端不支持cover-view需要改为view -->
      <!-- #ifndef H5 -->
      <cover-view>...</cover-view>
      <!-- #endif -->
      <!-- #ifdef H5 -->
      <view>...</view>
      <!-- #endif -->
    </map>
  </view>
</template>

方案二使用腾讯地图Web SDK

1. 获取腾讯地图Key

  • 访问:https://lbs.qq.com/
  • 注册/登录账号
  • 创建应用获取Key
  • 配置域名白名单你的H5域名

2. 配置manifest.json

manifest.jsonh5.sdkConfigs.maps.qqmap.key 中填入你的Key

{
  "h5": {
    "sdkConfigs": {
      "maps": {
        "qqmap": {
          "key": "你的腾讯地图Key"
        }
      }
    }
  }
}

3. 引入腾讯地图SDK

pages/home/home.vue 的H5端部分引入

<!-- #ifdef H5 -->
<script src="https://map.qq.com/api/gljs?v=1.exp&key=你的Key"></script>
<!-- #endif -->

4. 使用地图组件

可以使用 <map> 组件uni-app支持或直接使用腾讯地图Web API创建地图实例。


方案二使用iframe嵌入腾讯地图

优点:

  • 不需要Key使用URL scheme
  • 实现简单

缺点:

  • 交互受限
  • 无法自定义样式

实现方式:

在H5端使用iframe嵌入腾讯地图URL类似当前的点位导航URL。


方案三使用其他地图SDK

高德地图

百度地图


定位失败问题

错误:getLocation:fail network error

常见原因:

  1. 非HTTPS环境 - H5定位功能必须使用HTTPS协议
  2. 用户拒绝授权 - 浏览器定位权限被拒绝
  3. 网络问题 - 网络连接不稳定
  4. 浏览器不支持 - 某些浏览器不支持定位API

解决方案:

  1. 确保使用HTTPS - 部署到HTTPS域名
  2. 引导用户授权 - 提示用户在浏览器设置中允许定位权限
  3. 使用默认位置 - 定位失败时使用默认坐标(如苏州市中心)
  4. 降级处理 - 定位失败时仍显示点位列表(不计算距离)

当前实现

目前H5端已经实现了

  • 点位列表显示
  • 点击跳转腾讯地图导航
  • 定位失败时的降级处理
  • 即使定位失败也能加载点位数据

如果需要显示真正的地图,请按照上述方案一进行配置。