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

2017-11-27  本文已影响0人  Ruby_min

       在 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,就可以使用其提供的功能,百度、腾讯、高德、谷歌等都有提供,至于使用哪一种看具体项目需求。

上一篇下一篇

猜你喜欢

热点阅读