重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎么实现移动端的城市定位以及城市区域代码adcode?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
成都创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都做网站、网站建设质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式全网营销推广需求,让再小的高端网站设计也能产生价值!
使用高德定位API :
AMap.Map('iCenter')
AMap.CitySearch()
先在高德开放平台注册申请定位权限的key。 网站;高德开放平台
在需要定位的页面引入有定位key的script
基本引入展示
使用高德定位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大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注创新互联行业资讯频道。