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

本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码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()
            }

        }


};

相关推荐:      
                              

如何使用Chrome控制台进行3D模型编辑的实现(代码)

H5微信支付之引入微信的js-sdk包失败的解决方法

以上就是如何实现移动端的城市定位以及城市区域代码adcode的详细内容,更多请关注双恒网络其它相关文章!

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

云资源网 » 如何实现移动端的城市定位以及城市区域代码adcode

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
你们有qq群吗怎么加入?
当然有的,如果你是帝国cms、易优cms、和pbootcms系统的爱好者你可以加入我们的QQ千人交流群https://www.sudo1.com/page-qun.html。
  • 会员数(个)
  • 12334资源数(个)
  •        
  • 资源(G)
  •        
  • 今日下载
  • 1392稳定运行(天)

提供最优质的资源集合

立即查看 了解详情