现在 H5 有原生的可以定位的 api,但是这些 api 只能获取到当前的经纬度或者 ip 信息,而我们一般需要的是解析过后的具体地名信息,对定位信息进行解析就需要依托地图服务,现在一般用的就是高德和百度的地图服务。
要使用他们的地图服务也简单,只需要先去他们平台上申请一个 key,然后在 html 中引入 script 就可以使用了。
在做定位功能的时候有几点需要注意:
- 站点要是 HTTPS 的,本地调试的时候可以是 localhost,但是用 ip 或域名访问的时候一定要是 HTTPS 的,不然是获取不到定位的
- 不要在 Chrome 测试精确定位,这是 Chrome 的一个 bug,在 Chrome 中使用精确定位的相关功能是没有效果的
- 因为 Chrome 精确定位的 bug,所以在 Android 的 webView 中也是不能进行精确定位的,所以当没有精确定位的需求时,直接使用地图服务的城市查询服务,不要尝试精确定位
下面提供一个简单的获取当前城市名称的代码,如果需要其它更多示例请移步各家地图官网
<script type="text/javascript" src='//webapi.amap.com/maps?v=1.4.15&key=9721dba07cd10df7137a1167f290edf3'></script>
<script src="//webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
AMap.plugin('AMap.CitySearch', function () {
let citySearch = new AMap.CitySearch();
//自动获取用户IP,返回当前城市
citySearch.getLocalCity(function(status, result) {
if (status === 'complete' && result.info === 'OK') {
if (result && result.city && result.bounds) {
self.province = result.city
self.lat = result.bounds.lc.lat
self.lng = result.bounds.lc.lng
}
}
});
})