美文网首页
解决ios11不支持高德地图API定位功能的方法

解决ios11不支持高德地图API定位功能的方法

作者: Ruby_min | 来源:发表于2017-11-27 17:57 被阅读0次

           在 iOS 11 系统上访问JS API定位业务失败怎么解决?
           苹果新发的 iOS 11 操作系统的一大特性是对 http 形式访问页面的限制变得非常严格(相比iOS 10 和 iOS 9)。高德提供的JS API功能均支持http和https两种协议访问,在iOS 11操作系统上推荐使用https形式访问功能页面和接口。
           具体实施步骤:
    1、引进JS API文件,最好下载到本地。

    HTML
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.0&key=您申请的key值"></script> 
    

           请确保进入的JS API是1.4.1或者更高版本。v=1.4.0表示的是1.4.0版本,引入时请更新为1.4.1版本或者下载对应代码到本地后再引入。
    2、使用定位的完整代码如下:

    //获取用户所在位置的经纬度
    var get_position = function(calltype,signdata,qrcodeID,codeBtnFlag){
    
        var map,geolocation;
        //加载地图,调用浏览器定位服务
        map = new AMap.Map('container',{
            resizeEnable: true
        });
        map.plugin('AMap.Geolocation',function(){
            //geolocation = new AMap.Geolocation({
                //获取经纬度等待的时间
                //timeout: 4000//此为设置的超时毫秒数。若在指定时间内未定位成功,返回超时错误信息“TIMEOUT”,默认值为无穷大
            //});
            geolocation = new AMap.Geolocation();
            
            //判断是否是ios系统,如果是,则调用远程定位方法
            
            if (AMap.UA.ios) {
                    
                //使用远程定位,见 remogeo.js
                var remoGeo = new RemoGeoLocation();
    
                //替换方法
                navigator.geolocation.getCurrentPosition = function() {
                    return remoGeo.getCurrentPosition.apply(remoGeo,arguments);
                };
    
                //替换方法
                navigator.geolocation.watchPosition = function() {
                    return remoGeo.watchPosition.apply(remoGeo, arguments);
                };
            }
            
            map.addControl(geolocation);
            
            //询问是否允许获取地理信息
            geolocation.getCurrentPosition();
            //定位成功,返回经纬度信息
            AMap.event.addListener(geolocation,'complete', onComplete);
            //定位失败,返回定位出错信息
            AMap.event.addListener(geolocation,'error',onError);      
        });
        
        //解析定位结果
        function onComplete(data) {
            var qiandao_lng = data.position.getLng();
            var qiandao_lat = data.position.getLat();
            //利用经纬度,do something
        }
        //解析定位错误信息
        function onError(data) {
            alert('定位失败');
        }
    }
    

           PS:要想在自己的项目中使用地图相关功能,可通过调用官方地图接口API,就可以使用其提供的功能,百度、腾讯、高德、谷歌等都有提供,至于使用哪一种看具体项目需求。

    相关文章

      网友评论

          本文标题:解决ios11不支持高德地图API定位功能的方法

          本文链接:https://www.haomeiwen.com/subject/jjchvxtx.html