开发 地图 JS API 2.0 进阶教程 服务插件和工具 定位

定位 最后更新时间: 2023年03月23日

本章主要介绍高德JS API提供的多种获取定位信息的方式,包括:

  1. 地图初始化加载定位到当前城市
  2. 浏览器定位
  3. IP定位获取当前城市信息

地图初始化加载定位到当前城市

创建AMap.Map对象时如果没有传入center参数,您会发现地图将自动定位到您所在城市并显示,这就是JS API的初始加载定位:无需传入对应参数就能获取大致的定位信息。以下代码运行后将显示您所在城市的地图:

var map = new AMap.Map('container', {
  zoom: 10
})

浏览器定位

地图初始化加载的定位只能获取到城市级别信息,如果想获取到具体的位置就要借助浏览器定位。高德JS API提供了AMap.Geolocation插件来实现定位,使用方式如下:

AMap.plugin('AMap.Geolocation', function() {
  var geolocation = new AMap.Geolocation({
    enableHighAccuracy: true, // 是否使用高精度定位,默认:true
    timeout: 10000, // 设置定位超时时间,默认:无穷大
    offset: [10, 20],  // 定位按钮的停靠位置的偏移量
    zoomToAccuracy: true,  //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
    position: 'RB' //  定位按钮的排放位置,  RB表示右下
  })

  geolocation.getCurrentPosition(function(status,result){
        if(status=='complete'){
            onComplete(result)
        }else{
            onError(result)
        }
  });

  function onComplete (data) {
    // data是具体的定位信息
  }

  function onError (data) {
    // 定位出错
  }
})
提示

高德JS API提供的浏览器定位接口,融合了HTML5 Geolocation定位接口、精确IP定位服务,以及安卓定位sdk定位。

如果定位失败或者遇到其它问题,请参考这篇FAQ:Geolocation的定位流程以及定位失败的原因

IP定位获取当前城市信息

如果不需要获取精确的位置,只需要城市级别的定位信息,推荐使用AMap.CitySearch插件,AMap.CitySearch插件获取所在城市相比通过浏览器定位的方式也更快捷。

使用CitySearch插件获取当前所在城市信息代码如下:

AMap.plugin('AMap.CitySearch', function () {
  var citySearch = new AMap.CitySearch()
  citySearch.getLocalCity(function (status, result) {
    if (status === 'complete' && result.info === 'OK') {
      // 查询成功,result即为当前所在城市信息
    }
  })
})

一些注意事项

移动端

移动端包括手机,pad和其它带有GPS定位芯片的智能设备(如手表、音箱等),移动端的系统包括iOS和Android。成功完成定位需要达成以下前提条件:

  1. 系统GPS打开
  2. 所使用的App或浏览器已获取定位权限
  3. 对打开的页面允许使用定位
HTTPS安全限制

对于iOS10以上系统和Android的一些版本已禁止在非HTTPS协议的域名下定位,请尽快将站点升级到HTTPS

注意

即便满足定位成功的前提条件,并不一定等于可以成功定位,定位还与当前位置(室内会影响GPS信息)、手机信号和定位权限等因素影响。如果您在使用过程中定位失败,可以参考FAQ:Geolocation的定位流程以及定位失败的原因 ,将失败信息通过工单发送给我们,高德的工程师将协助您解决问题。

PC

因为pc设备上大都缺少GPS芯片,所以在PC上的定位主要通过IP精准定位服务,该服务的失败率在5%左右。

定位失败

如果定位失败或者遇到其它问题,请参考FAQ:Geolocation的定位流程以及定位失败的原因 ,将失败信息通过工单发送给我们,高德的工程师将协助您解决问题。

返回顶部 示例中心 常见问题 智能客服 公众号
二维码