高德文档

https://lbs.amap.com/api/amap-ui/demos/amap-ui-positionpicker/position-picker

HTML5浏览器定位三次不允许定位后不再弹出定位授权提示框

解决办法很鸡肋,需要在系统中就行清理缓存的设置:

设置->通用->还原->还原位置与隐私

还原设置后打开APP需要重新授予获取位置权限

坐标

小程序getLocation 默认是wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标

  • GCJ-02 国测局坐标(火星坐标,比如高德地图在用) 中国标准
  • WGS84 地球坐标 从 GPS 设备中取出的数据的坐标系 国际标准
  • BD-09 百度坐标 公司标准

百度地图,高德地图,HTML5经纬度比较

通过百度地图、高德、浏览器获得到的经纬度都不一样。需要通过各地图的转换API才可以

百度地图坐标转换API是一套以HTTP形式提供的坐标转换接口,用于将常用的非百度坐标(目前支持GPS设备获取的坐标、google地图坐标、soso地图坐标、amap地图坐标、mapbar地图坐标)转换成百度地图中使用的坐标,并可将转化后的坐标在百度地图JavaScript API、车联网API、静态图API、web服务API等产品中使用。注意Android SDK、iOS SDK、定位SDK和导航SDK坐标转换服务需单独申请

小程序定位

wx.getLocation(Object object)
调用前需要 用户授权 scope.userLocation

wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标

默认wgs84
使用第三方服务进行逆地址解析时,请确认第三方服务默认的坐标系,正确进行坐标转换。

地图定位

HTML5的Geolocation功能

关于定位,分为GPS定位和网络定位2种。GPS定位,精度较高,可达到10米,但室内不可用,且超级费电。网络定位,分为wifi定位和基站定位,都是通过获取wifi或者基站信息,然后查询对应的wifi或者基站位置数据库,得到的定位地点。

当浏览器原生定位接口定位失败后,系统会调用IP定位,返回定位点所在城市中心点。此时,定位精度范围返回“null”。使用高德JS API浏览器定位,精度如果返回null就说明定位失败了,而不是定位偏差

高德JS-SDK定位

https://lbs.amap.com/api/javascript-api/guide/services/geolocation#init

高德JS API提供的浏览器定位接口,融合了HTML5 Geolocation定位接口、精确IP定位服务,以及安卓定位sdk定位。如果定位失败或者遇到其它问题,请参考这篇FAQ:Geolocation的定位流程以及定位失败的原因

默认情况下,PC 端优先使用精确 IP 定位,解决多数浏览器无法完成定位的现状,IP定位失败后使用浏览器定位;手机端优先使用浏览器html5定位,失败后使用IP定位;对于安卓 WebView 页面的开发者,可以结合定位 sdk 进行辅助定位,详细说明见useNative参数。精确IP定位时不返回accuracy字段值。

location_type定位结果的来源,可能的值有:’html5’、’ip’、’sdk’

手机端优先使用浏览器定位,失败后使用IP定位

由于Chrome、IOS10等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。

useNative参数

注:如果要使用辅助定位的功能,除了需要将useNative属性设置为true以外,还需要调用高德定位sdk中,AMapLocationClient类的startAssistantLocation方法,开启辅助H5定位功能;如果不用,就调用stopAssistantLocation()方法停止辅助H5定位功能。具体用法可参考定位SDK的参考手册

定位方式

  • html5
  • ip

    基本元素

    POI

    兴趣点

Marker

点标记是用来标示某个位置点信息的一种地图要素,覆盖于图层之上。

点标记 会与图层内的要素保持相对静止

地图控件 Map Controls

比例尺和级别控件

标注 Labels

我们习惯将底图上自带的标示一定信息的文字或图标称为标注,比如 POI 标注,道路名称标注

底图动,标注不动

地图移动事件

如何用JS-API进行坐标转换?

  1. AMap.convertFrom("121.260962,31.377683", "gps", function(status, result) {
  2. console.log( "result=" + result.locations);
  3. });

bridge提供的接口

wLocation 接入的高德SDK

  1. AlipayJSBridge.call('wLocation',{
  2. number:string
  3. }, fn)

输入提示和POI搜索插件

使用高德的UI插件

placeSearch

可以使用这个功能,通过GPS查询我们要的点吗?

  1. var placeSearch = new AMap.PlaceSearch({
  2. // city 指定搜索所在城市,支持传入格式有:城市名、citycode和adcode
  3. city: '010'
  4. })
  5. // 基本查询
  6. placeSearch.search('北京大学', function (status, result) {
  7. // 查询成功时,result即对应匹配的POI信息
  8. })
  9. // 详情查询
  10. placeSearch.getDetails("B000A83U0P", function(status, result) {
  11. if (status === 'complete' && result.info === 'OK') {
  12. placeSearch_CallBack(result);
  13. }
  14. });

逆地理编码

将得到的经纬度进行逆地理编码后获取地址信息

拖拽地图选址

使用PositionPicker组件实现

目前已经完成的功能

  1. 拖拽地图
  2. 搜索

待完成功能

  1. MobiCityPicker(城市选择器)插件已经提供