Geolocation定位常见问题说明
注:默认情况下,PC 端优先使用精确 IP 定位,解决多数浏览器无法完成定位的现状,IP定位失败后使用浏览器定位;手机端优先使用浏览器定位,失败后使用IP定位;对于安卓 WebView 页面的开发者,可以结合定位 sdk 进行辅助定位,详细说明见useNative参数。精确IP定位时不返回accuracy字段值。
由于Chrome、IOS10等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。
代码示例
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-3
0: 可以使用IP定位
1: 手机设备禁止使用IP定位
2: PC上禁止使用IP定位
3: 所有终端禁止使用IP定位
noGeoLocation
Number
是否禁止使用浏览器Geolocation定位,默认值为0,可选值0-3
0: 可以使用浏览器定位
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(10,20)
showMarker
Boolean
定位成功时是否在定位位置显示一个Marker
默认值:true
markerOptions
定位点Marker的配置,不设置该属性则使用默认Marker样式
showCircle
Boolean
定位成功并且有精度信息时,是否用一个圆圈circle表示精度范围
默认值:true
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的时候表示查询失败
事件
参数
说明
complete
定位失败时触发此事件

GeolocationResult 对象

属性
类型
说明
position
定位结果
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 对象

属性
类型
说明
info
String
message
String
造成定位失败结果的一些有用信息message说明

错误信息列表

错误信息
参数含义
说明
NOT_SUPPORTED
当前浏览器不支持定位功能
FAILED
定位失败,失败原因可在message字段中获得。定位失败的原因

AMap.CitySearch
AMap.CitySearch 根据IP返回对应城市信息,提供根据输入IP或自动获取IP获取对应城市信息功能。用户可以通过自定义回调函数取回并显示查询结果。若服务请求失败,系统将返回错误信息。

构造函数
说明
AMap.CitySearch( )
构造函数,提供IP定位返回所在城市信息功能
方法
返回值
说明
自动获取用户IP,回调返回当前用户所在城市
当status为complete时,result为CitySearchResult;
当status为error时,result为错误信息info;
当status为no_data时,代表检索返回0结果
getCityByIp(ip:String,
根据输入IP地址返回对应城市信息
status同上
事件
参数
说明
complete
当查询成功时触发此事件
error
当查询失败时触发此事件

CitySearchResult 对象

属性
类型
说明
city
String
城市名称
bounds
地图展示该城市时使用的矩形区域