完美解決window.navigator.geolocation.getCurrentPosition,在IOS10系統中沒法定位問題

目前因爲許多用戶都將電話升級到了IOS系統,蘋果的iOS 10已經正式對外推送,相信不少用戶已經更新到了最新的系統。然而,若是web站沒有及時支持https協議的話,當不少用戶在iOS 10下訪問不少網站時,會發現都沒法進行正常精肯定位,致使部分網站的周邊推薦服務沒法正常使用。爲什麼在iOS 10下沒法獲取當前位置信息?這是由於在iOS 10中,蘋果對webkit定位權限進行了修改,全部定位請求的頁面必須是https協議的。若是是非https網頁,在http協議下經過html5原生定位接口會返回錯誤,也就是沒法正常定位到用戶的具體位置,而已經支持https的網站則不會受影響。javascript

目前提供的解決方案:html

一、將網站的http設置爲Https。html5

二、經過第三方解決,這也是我目前使用的方法。java

首先看下代碼差別:jquery

一、在頁面引入jsios

<script src="/Content/Scripts/jquery.flexslider.js"></script>  
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>  
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>  

window.navigator.geolocation.getCurrentPosition:經過手機的webKit定位(目前ios系統對非https網站不提供支持)git

navigator.geolocation.getCurrentPosition(translatePoint); //定位  
function translatePoint(position) {  
    var currentLat = position.coords.latitude;  
    var currentLon = position.coords.longitude;  
    SetCookie("curLat", currentLat, 1);//設置cookie  
    SetCookie("curLng", currentLon, 1);//設置cookie  
    var gpsPoint = new BMap.Point(currentLon, currentLat);  
    var pt = new BMap.Point(currentLon, currentLat);     var geoc = new BMap.Geocoder();     geoc.getLocation(pt, function (rs) {       var addComp = rs.addressComponents;       SetCookie("curLat", currentLat, 1); //設置cookie       SetCookie("curLng", currentLon, 1); //設置cookie       //alert(JSON.stringify(addComp));       var city = addComp.city; //得到具體街道信息       var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;       $("#nowRoad").text(texts);     });
}

網站不支持https訪問web

一、頁面引入jsapi

<script src="/Content/Scripts/jquery.flexslider.js"></script>  
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>  
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script> 
var geolocation = new BMap.Geolocation();  
geolocation.getCurrentPosition(function (r) {  
  if (this.getStatus() == BMAP_STATUS_SUCCESS) {  
      var mk = new BMap.Marker(r.point);  
      currentLat = r.point.lat;  
      currentLon = r.point.lng;  
      SetCookie("curLat", currentLat, 1); //設置cookie  
      SetCookie("curLng", currentLon, 1); //設置cookie             
      var pt = new BMap.Point(currentLon, currentLat);  
      var geoc = new BMap.Geocoder();  
      geoc.getLocation(pt, function (rs) {  
        var addComp = rs.addressComponents;  
        SetCookie("curLat", currentLat, 1); //設置cookie  
        SetCookie("curLng", currentLon, 1); //設置cookie                  
        var city = addComp.city;  
        var addComp = rs.addressComponents;  
        var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;  
        //獲取地理位置成功,跳轉  
      }); 
  }
}) 

目前獲取定位的方法都在這裏,僅供你們參考使用!cookie

相關文章
相關標籤/搜索