H5页面在ios的浏览器上使用 高德地图 报当前定位失败Geolocation permission denied 或者 偶尔报AMap没有找到的

1.解决报当前定位失败Geolocation permission denied:

 

 可以去高德api查看:常见问题 | 高德地图API (amap.com)

 

图中红圈2,3,4,5,6对应Geolocation permission denied报错的原因,可对应修改。

如红圈2:用户打开定位选项即可:

 

 2.进入定位页面偶尔报 AMap没有找到的。

1.在index.html文件中;

  <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.12&key=自己的key">
      window.AMap = AMap;
    </script>

2.在封装高德api的文件下对应调整:

  /**
   * 用高德地图定位
   */
  amapLocate(
    complete?: (cityCode: string, cityName: string) => void,
    error?: () => void
  ): void {
    const AMap = (window as any).AMap;
    const mapObj = new AMap.Map("iCenter");
    mapObj.plugin("AMap.Geolocation", () => {
      const geolocation = new AMap.Geolocation({
        timeout: 100000, // 超过 100 秒后停止定位
      });
      mapObj.addControl(geolocation);

      geolocation.getCurrentPosition();
      AMap.event.addListener(
        geolocation,
        "complete",
        (data: {
          position: { lat: number; lng: number };
          addressComponent: { adcode?: string; province: string; city: string };
        }) => {
          const position = data.position;
          const addressComponent = data.addressComponent;
          this.LocationModule.SET_longitude_PERSIST(position.lng);
          this.LocationModule.SET_latitude_PERSIST(position.lat);
          if (complete) {
            complete(
              getCityCodeByAdcode(
                addressComponent
                  ? addressComponent.adcode
                  : LocationModule.defaultCityCode
              ),
              addressComponent
                ? addressComponent.city || addressComponent.province
                : LocationModule.defaultCityName // 直辖市 addressComponent.city 为空字符串,这时要取 province
            );
          }
        }
      );
      AMap.event.addListener(geolocation, "error", (errorData: unknown) => {
        console.error("locate >>> errorData", errorData);
        this.LocationModule.SET_longitude_PERSIST(-1);
        this.LocationModule.SET_latitude_PERSIST(-1);
        if (error) {
          error();
        }
      });
    });
  }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值