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

來源:互聯網
上載者:User

標籤:ddc   ios系統   src   navig   window   pre   tla   方法   asc   

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

目前提供的解決方案:

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

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

首先看下代碼差異:

1、在頁面引入js

<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網站不提供支援)

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訪問

1、頁面引入js

<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;          //擷取地理位置成功,跳轉  
      }); 
  }
}) 

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.