• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 如何实现移动端的城市定位以及城市区域代码adcode

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含iphone,html5,javascript等相关知识,匿名希望在学习及工作中可以帮助到您
本篇文章分享给大家的内容是关于如何实现移动端的城市定位以及城市区域代码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包失败的解决方法

您可能想查找下面的文章:

  • Html5实现iPhone开机界面示例代码
  • 如何实现移动端的城市定位以及城市区域代码adcode
  • 关于iphoneX 适配客户端H5页面的问题
  • H5页面在iPhoneX显示的适配问题
  • 有关HTML5页面在iPhoneX适配问题
  • HTML 5 的手机游戏平台都有哪些?
  • Flash在苹果、微软、火狐的围剿下生存期还有几年?有没有完善的替代方案?
  • 移动端视网膜(Retina)屏幕下如何解决网页中1px显示问题?
  • 新浪微博的 HTML5 页面体验已经和 native app 差不多了,是否意味着 HTML5 可以取代 native 了?
  • HTML5+jQuery实现支持桌面和移动拖动iPhone风格插件

相关文章

  • 2018-12-03html5什么时候能爆发超过App,还是只会是一个美好的愿望?
  • 2018-12-03HTML5中的表单属性
  • 2018-12-03在Vuejs里利用index对第一项添加class的方法
  • 2018-12-03H5实现输入框添加语音功能的方法详解
  • 2018-12-03html5使用indexdb的代码实例分享(图文)
  • 2018-12-03详细介绍基于HTML5的超级玛丽游戏demo的示例代码
  • 2017-08-06利用HTML5的新特点实现图片文件异步上传
  • 2018-12-03html5中返回音频/视频是否已暂停的属性paused
  • 2018-12-03零基础开发RPG游戏开源讲座(四)-游戏脚本化&地图跳转
  • 2018-12-03如何去设计一个自适应的网页设计或HTMl5

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 在HTML5 Canvas中放入图片和保存为图片的方法
    • HTML5中利用postMessage实现Ajax中的POST跨域
    • 像“红杏”这样的HTML立体旋转效果是如何实现的?难度如何?
    • html5实现数据存储实例代码
    • 自定义HTML5 Progress的样式的图文代码详解
    • H5中History模式的使用详解
    • JS的表单传值与URL编码转换详解
    • 推荐10款常用的图片压缩上传用法,欢迎下载!
    • SVG进阶|SVG过滤器(SVG Filters)
    • 基于HTML5 FileSystem API的使用介绍_html5教程技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有