標籤: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系統中無法定位問題