高德文档
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的参考手册
定位方式
Marker
点标记是用来标示某个位置点信息的一种地图要素,覆盖于图层之上。
点标记 会与图层内的要素保持相对静止
地图控件 Map Controls
比例尺和级别控件
标注 Labels
我们习惯将底图上自带的标示一定信息的文字或图标称为标注,比如 POI 标注,道路名称标注
底图动,标注不动
地图移动事件
如何用JS-API进行坐标转换?
AMap.convertFrom("121.260962,31.377683", "gps", function(status, result) {
console.log( "result=" + result.locations);
});
bridge提供的接口
wLocation 接入的高德SDK
AlipayJSBridge.call('wLocation',{
number:string
}, fn)
输入提示和POI搜索插件
使用高德的UI插件
placeSearch
可以使用这个功能,通过GPS查询我们要的点吗?
var placeSearch = new AMap.PlaceSearch({
// city 指定搜索所在城市,支持传入格式有:城市名、citycode和adcode
city: '010'
})
// 基本查询
placeSearch.search('北京大学', function (status, result) {
// 查询成功时,result即对应匹配的POI信息
})
// 详情查询
placeSearch.getDetails("B000A83U0P", function(status, result) {
if (status === 'complete' && result.info === 'OK') {
placeSearch_CallBack(result);
}
});
逆地理编码
将得到的经纬度进行逆地理编码后获取地址信息
拖拽地图选址
目前已经完成的功能
- 拖拽地图
- 搜索
待完成功能
- MobiCityPicker(城市选择器)插件已经提供