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


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

   目前提供的解決方案:

  1、將網站的http設置為Https。

  2、通過第三方解決,這也是我目前使用的方法。

    首先看下代碼差異:

   1、在頁面引入js

[html]  view plain  copy
 
  1. <script src="/Content/Scripts/jquery.flexslider.js"></script>  
  2. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>  
  3. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>  

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

[javascript]  view plain  copy
 
  1.        navigator.geolocation.getCurrentPosition(translatePoint); //定位  
  2.             function translatePoint(position) {  
  3.                 var currentLat = position.coords.latitude;  
  4.                 var currentLon = position.coords.longitude;  
  5.                 SetCookie("curLat", currentLat, 1);//設置cookie  
  6.                 SetCookie("curLng", currentLon, 1);//設置cookie  
  7.                 var gpsPoint = new BMap.Point(currentLon, currentLat);  
  8.             
  9.                     var pt = new BMap.Point(currentLon, currentLat);  
  10.                     var geoc = new BMap.Geocoder();  
  11.                     geoc.getLocation(pt, function (rs) {  
  12.                         var addComp = rs.addressComponents;  
  13.                         SetCookie("curLat", currentLat, 1); //設置cookie  
  14.                         SetCookie("curLng", currentLon, 1); //設置cookie  
  15.                         //alert(JSON.stringify(addComp));  
  16.                         var city = addComp.city;                       
  17.                        
[javascript]  view plain  copy
 
  1.                                     //獲得具體街道信息    
  2.                        var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;  
  3.                             $("#nowRoad").text(texts);  
  4.                        
  5.   
  6.   
  7.                     });  
[javascript]  view plain  copy
 
  1.   

2、網站不支持https訪問

 

     1、頁面引入js

      

[html]  view plain  copy
 
  1. <script src="/Content/Scripts/jquery.flexslider.js"></script>  
  2. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>  
  3. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>  

  2、獲得定位方法

 

 

[html]  view plain  copy
 
  1. var geolocation = new BMap.Geolocation();  
  2.         geolocation.getCurrentPosition(function (r) {  
  3.             if (this.getStatus() == BMAP_STATUS_SUCCESS) {  
  4.                 var mk = new BMap.Marker(r.point);  
  5.                 currentLat = r.point.lat;  
  6.                 currentLon = r.point.lng;  
  7.                 SetCookie("curLat", currentLat, 1); //設置cookie  
  8.                 SetCookie("curLng", currentLon, 1); //設置cookie             
  9.                     var pt = new BMap.Point(currentLon, currentLat);  
  10.                     var geoc = new BMap.Geocoder();  
  11.                     geoc.getLocation(pt, function (rs) {  
  12.                         var addComp = rs.addressComponents;  
  13.                         SetCookie("curLat", currentLat, 1); //設置cookie  
  14.                         SetCookie("curLng", currentLon, 1); //設置cookie  
  15.                        
  16.                         var city = addComp.city;  
  17.                         var addComp = rs.addressComponents;  
  18.                         var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;  
  19.                         //獲取地理位置成功,跳轉  
  20.                     
  21.                   
  22.   
  23.             }  


目前獲取定位的方法都在這里,僅供大家參考使用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM