最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何实现移动端的城市定位以及城市区域代码adcode

来源:动视网 责编:小采 时间:2020-11-27 15:04:54
文档

如何实现移动端的城市定位以及城市区域代码adcode

如何实现移动端的城市定位以及城市区域代码adcode:本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码adcode,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到有需要的朋友。使用高德定位API :AMap.Map('iCenter')AMap.CitySearch()先在高德开放平台注
推荐度:
导读如何实现移动端的城市定位以及城市区域代码adcode:本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码adcode,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到有需要的朋友。使用高德定位API :AMap.Map('iCenter')AMap.CitySearch()先在高德开放平台注


本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码adcode,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到有需要的朋友。

使用高德定位API :

  1. AMap.Map('iCenter')

  2. AMap.CitySearch()

先在高德开放平台注册申请定位权限的key。 网站;高德开放平台

在需要定位的页面引入有定位key的script

<!doctype html>
<html>
<head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
 <title>基本引入展示</title>
 <script src="https://webapi.amap.com/maps?v=1.4.8&key=您申请的key值"></script>

</head>
<body>
<p id="container"></p>

</body>
</html>

使用高德定位API

需求:苹果设备使用IP定位,其他使用gps定位

function getlocation() {


 
 var u = navigator.userAgent;

 var ua = navigator.userAgent.toLowerCase();

 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端


 //GPS定位
 function locationForGPS() {
 /*********跟踪标记**********/ console.log('GPS定位开始+++');
 var map, geolocation;
 //加载地图,调用浏览器定位服务
 map = new AMap.Map('iCenter');
 map.plugin('AMap.Geolocation', function() {
 geolocation = new AMap.Geolocation({
 enableHighAccuracy: false,//是否使用高精度定位,默认:true
 timeout: 10000, //超过10秒后停止定位,默认:无穷大
 });
 map.addControl(geolocation);
 geolocation.getCurrentPosition();
 
 //getCityInfo是高德GPS定位里面的一个方法,先返回ip定位数据,由于IP定位有可能不准确,所以后面用GPS数据修正
 //
 geolocation.getCityInfo(function(status,result){
 /*********跟踪标记**********/ console.log('与GPS同步IP定位开始,进行数据写入+++');
 if (status === 'complete' && result.info === 'SUCCESS') {
 /*********跟踪标记**********/ console.log('同步IP定位成功,进行数据写入+++');
 if(isNull(sessionStorage.getItem('autouserchooselocationct'))){
 /*********跟踪标记**********/ console.log('未检测检查有上一次定位数据,进行数据写入+++');
 let cityAdcode=result.adcode;
 let cityName=result.city;
 
 sessionStorage.setItem('autouserchooselocationct', cityName);
 sessionStorage.setItem('autouserchooselocationcode', cityAdcode);

 
 /*********跟踪标记**********/ console.log('同步IP定位结束,进行数据写入完成+++');
 }
 }
 });


 AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
 AMap.event.addListener(geolocation, 'error', onError); //返回定位出错信息




 });

 //GPS定位成功
 function onComplete(data) {
 console.log(data)
 /*********跟踪标记**********/ console.log('GPS定位启动+++');
 //gsp定位精确到区,返回的adcode精确到了城市下属的区域,
 //想要获取城市的abcode还需要使用高德的另一个API,城市区域查询
 
 let cityName=data.addressComponent.city;

 let geocoder = new AMap.Geocoder({});
 //地理编码,返回地理编码结果,
 
 geocoder.getLocation(cityName, function(status, result) {
 if (status === 'complete' && result.info === 'OK') {
 /*********跟踪标记**********/ console.log('GPS定位成功,处理定位数据+++');

 /*********跟踪标记**********/ console.log('进行数据写入,覆盖同步IP的数据+++');
 let cityAdcode=result.geocodes[0].adcode;
 sessionStorage.setItem('autouserchooselocationct', cityName);
 sessionStorage.setItem('autouserchooselocationcode', cityAdcode);
 
 /*********跟踪标记**********/ console.log('GPS定位结束,进行数据写入完成+++');
 }


 });

 }

 //GPS定位失败
 function onError() {
 /*********跟踪标记**********/ console.log('GPS定位失败开始启用ip定位+++');
 locationForIp(true);
 /*********跟踪标记**********/ console.log('gps-ip++...')
 }

 }

 //IP定位
 function locationForIp(tap) {
 /*********跟踪标记**********/if(tap){ console.log('GPS定位失败开始启用ip定位+++');}
 /*********跟踪标记**********/ console.log('ip定位开始+++');
 var citysearch = new AMap.CitySearch();
 //自动获取用户IP,返回当前城市
 citysearch.getLocalCity(function (status, result) {
 if (status === 'complete' && result.info === 'OK') {
 if (result && result.city && result.bounds) {
 let GetUserLocation = result.city,
 GetUserLocationcode = result.adcode;
 /*********跟踪标记**********/console.log('ip定位成功,开始检查是否有上一次定位数据+++');
 if(isNull(sessionStorage.getItem('autouserchooselocationct'))){
 /*********跟踪标记**********/console.log('ip定位成功,未检测检查有上一次定位数据,进行数据写入+++');
 sessionStorage.setItem('autouserchooselocationct', GetUserLocation);
 sessionStorage.setItem('autouserchooselocationcode', GetUserLocationcode);

 
 /*********跟踪标记**********/console.log('ip定位成功,进行数据写入结束+++');
 }
 }
 } else {

 
 /*********跟踪标记**********/console.log('ip定位失败,进行数据写入结束+++');
 }

 })

 }

 if(isiOS){
 /*********跟踪标记**********/console.log('ios设备启用IP定位');
 locationForIp(false);

 }else {
 /*********跟踪标记**********/console.log('非ios设备启用GPS定位');
 locationForGPS()
 }

 }


};

文档

如何实现移动端的城市定位以及城市区域代码adcode

如何实现移动端的城市定位以及城市区域代码adcode:本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码adcode,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到有需要的朋友。使用高德定位API :AMap.Map('iCenter')AMap.CitySearch()先在高德开放平台注
推荐度:
标签: 定位 代码 城市
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top