AMap.Geolocation 插件
AMap.Geolocation 定位服务插件。融合了浏览器定位、高精度IP定位、安卓定位sdk辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息、持续定位(浏览器定位)等功能。用户可以通过两种当时获得定位的成败和结果,一种是在 getCurrentPosition
的时候传入回调函数来处理定位结果,一种是通过事件监听来取得定位结果。Geolocation定位常见问题说明
注:默认情况下,PC 端优先使用精确 IP 定位,解决多数浏览器无法完成定位的现状,IP定位失败后使用浏览器定位;手机端优先使用浏览器定位,失败后使用IP定位;对于安卓 WebView 页面的开发者,可以结合定位 sdk 进行辅助定位,详细说明见useNative
参数。精确IP定位时不返回accuracy
字段值。由于Chrome、IOS10等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。
代码示例
JavaScript
mapObj = new AMap.Map('iCenter');
mapObj.plugin('AMap.Geolocation', function () {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
maximumAge: 0, //定位结果缓存0毫秒,默认:0
convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
showButton: true, //显示定位按钮,默认:true
buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角
buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
zoomToAccuracy:true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
});
mapObj.addControl(geolocation);
geolocation.getCurrentPosition();
AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息
});
相关示例
GeolocationOptions | 类型 | 说明 |
---|
enableHighAccuracy | Boolean | 是否使用高精度默认值:true |
timeout | Number | 超时毫秒数,若在指定时间内未定位成功,返回超时错误信息“TIMEOUT”默认值:无穷大 |
noIpLocate | Number | 是否禁止使用IP定位,默认值为0,可选值0-30: 可以使用IP定位1: 手机设备禁止使用IP定位2: PC上禁止使用IP定位3: 所有终端禁止使用IP定位 |
noGeoLocation | Number | 是否禁止使用浏览器Geolocation定位,默认值为0,可选值0-30: 可以使用浏览器定位1: 手机设备禁止使用浏览器定位2: PC上禁止使用浏览器定位3: 所有终端禁止使用浏览器定位 |
GeoLocationFirst | Boolean | 默认为false,设置为true的时候可以调整PC端为优先使用浏览器定位,失败后使用IP定位 |
maximumAge | Number | 缓存毫秒数。定位成功后,定位结果的保留时间默认值:0 |
convert | Boolean | 是否使用坐标偏移,取值true:为高德地图坐标,取值false:为浏览器定位坐标默认值:true |
showButton | Boolean | 是否显示定位按钮默认值:true |
buttonDom | String|DomElement | 自定义定位按钮的内容。可支持HTML代码或Dom元素对象,不设置该属性则使用默认按钮样式 |
buttonPosition | String | 定位按钮可停靠的位置“LT”:左上角“LB”:左下角“RT”:右上角“RB”:右下角默认值:“LB” |
buttonOffset | Pixel | 按钮距离停靠位置的偏移量默认值:Pixel(10,20) |
showMarker | Boolean | 定位成功时是否在定位位置显示一个Marker默认值:true |
markerOptions | MarkerOptions | 定位点Marker的配置,不设置该属性则使用默认Marker样式 |
showCircle | Boolean | 定位成功并且有精度信息时,是否用一个圆圈circle表示精度范围默认值:true |
circleOptions | CircleOptions | 定位点Circle的配置,不设置该属性则使用默认Circle样式 |
panToLocation | Boolean | 定位成功后,是否把定位得到的坐标设置为地图中心点坐标默认值:true |
zoomToAccuracy | Boolean | 定位成功且显示精度范围时,是否把地图视野调整到正好显示精度范围默认值:false |
useNative | Boolean | 是否使用安卓定位sdk用来进行定位,默认:false适用于同时在APP中使用安卓定位sdk并在APP WebView中使用了JSAPI的开发者。开启后,将优先尝试使用sdk进行定位,失败后依次尝试浏览器定位和IP定位。注:如果要使用辅助定位的功能,除了需要将useNative属性设置为true以外,还需要调用高德定位sdk中,AMapLocationClient类的startAssistantLocation方法,开启辅助H5定位功能;如果不用,就调用stopAssistantLocation()方法停止辅助H5定位功能。具体用法可参考定位SDK的参考手册 |
extensions | String | JSAPI在定位成功的时候会将得到的经纬度进行逆地理编码后获取地址信息,以方便开发者的进一步使用;extensions用来设定是否需要周边POI、道路交叉口等信息,可选值’base’、’all’。默认为’base’,只返回地址信息;设定为’all’的时候将返回周边POI、道路交叉口等信息。 |
方法 | 返回值 | 说明 |
---|
isSupported( ) | Boolean | 是否支持浏览器定位,当不支持是getCurrentPosition也会使用尝试进行精确IP定位 |
getCurrentPosition(callback:function(status,result){}) |
| 获取用户当前的精确位置信息当回调函数中的status为complete的时候表示定位成功,result为GeolocationResult对象;当回调函数中的status为error的时候表示定位失败,result为GeolocationError对象; 调用此方法可实现打开页面自动定位,如不调用此方法可实现点击位置触发后定位。callback的方式和事件监听的方式二者选择一种即可。 |
watchPosition( ) | Number | 使用浏览器定位接口监控当前位置,移动端有效。在监控过程中,每隔一段时间会自动调用定位成功或失败的回调函数。注:由于时间间隔受浏览器限制,如您想自定义时间间隔,建议您使用定时器,每隔一段时间调用一次getCurrentPosition获取当前位置。 |
clearWatch(watchId:Number) | Number | 取消对当前位置的监控 |
getCityInfo(callback:function(status,result){}) |
| 进行IP城市查询status为complete的时候表示查询成功,result包含省、市、adcode、citycode、城市中心点center等信息;status为error的时候表示查询失败 |
GeolocationResult 对象
属性 | 类型 | 说明 |
---|
position | LngLat | 定位结果 |
accuracy | Number | 精度范围,单位:米 |
location_type | String | 定位结果的来源,可能的值有:’html5’、’ip’、’sdk’ |
message | String | 形成当前定位结果的一些信息 |
isConverted | Boolean | 是否经过坐标纠偏 |
info | String | 状态信息 “SUCCESS” |
addressComponent | AddressComponent | 地址信息,详情参考Geocoder |
formattedAddress | String | 地址 |
pois | Array | 定位点附近的POI信息,extensions等于’base’的时候为空 |
roads | Array | 定位点附近的道路信息,extensions等于’base’的时候为空 |
crosses | Array | 定位点附近的道路交叉口信息,extensions等于’base’的时候为空 |
GeolocationError 对象
错误信息 | 参数含义 | 说明 |
---|
NOT_SUPPORTED | 当前浏览器不支持定位功能 |
|
FAILED | 定位失败,失败原因可在message字段中获得。 定位失败的原因 |
|
AMap.CitySearch
AMap.CitySearch 根据IP返回对应城市信息,提供根据输入IP或自动获取IP获取对应城市信息功能。用户可以通过自定义回调函数取回并显示查询结果。若服务请求失败,系统将返回错误信息。
构造函数 | 说明 |
---|
AMap.CitySearch( ) | 构造函数,提供IP定位返回所在城市信息功能 |
方法 | 返回值 | 说明 |
---|
getLocalCity(cbk:function(status:String,result:info/ CitySearchResult )) |
| 自动获取用户IP,回调返回当前用户所在城市当status为complete时,result为CitySearchResult;当status为error时,result为错误信息info;当status为no_data时,代表检索返回0结果 |
getCityByIp(ip:String, callback:function(status:String,result:info/ CitySearchResult )) |
| 根据输入IP地址返回对应城市信息status同上 |
CitySearchResult 对象
属性 | 类型 | 说明 |
---|
city | String | 城市名称 |
bounds | Bounds | 地图展示该城市时使用的矩形区域 |