IOS10 window.navigator.geolocation.getCurrentPosition 沒法定位問題

在iOS 10中,蘋果對webkit定位權限進行了修改,全部定位請求的頁面必須是https協議的。html

若是是非https網頁,在http協議下經過HTML5原生定位接口會返回錯誤,也就是沒法正常定位到用戶的具體位置,而已經支持https的網站則不會受影響。html5

目前提供的解決方案:git

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

  二、經過第三方API解決。瀏覽器

順便附上定位方法:函數

    // //定位方法一
$(function(){
startgps();
});
//獲取地理位置方法
function startgps()
{
//判斷是否支持
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showgps,//成功回調函數
function(error) //失敗回調函數
{
getPositionError(error);
},
{enableHighAcuracy: true, timeout:5000,maximumAge: 0}); // 這裏設置超時爲5000毫秒,即1秒
}
else
{
document.getElementById('geo_loc').innerHTML="您的瀏覽器不支持地圖定位";

}
}
function showgps(position)
{
document.getElementById('longitude').innerHTML="經度"+position.coords.longitude+ "緯度"+position.coords.latitude;
getAddress(position.coords.latitude,position.coords.longitude);

}
function getPositionError(error){
switch(error.code){

case error.TIMEOUT:

alert("鏈接超時,請重試");

break;

case error.PERMISSION_DENIED:

alert("您拒絕了使用位置共享服務,查詢已取消");

break;

case error.POSITION_UNAVAILABLE:

alert("親愛的火星網友,很是抱歉,咱們暫時沒法爲您所在的星球提供位置服務");

break;

}
}



//定位方法二
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(
function(position){
document.getElementById('longitude').innerHTML="經度"+position.coords.longitude+ "緯度"+position.coords.latitude;
document.getElementById('accuracy').innerHTML="偏差"+position.coords.accuracy+"米";
getAddress(position.coords.latitude,position.coords.longitude);
},
function(error){
var errorType = ['您拒絕共享位置信息', '獲取不到位置信息', '獲取位置信息超時'];
// alert(errorType[error.code - 1]);
document.getElementById('geo_loc').innerHTML=error.code+"\n"+error.message;
document.getElementById('geo_loc').innerHTML= errorType[error.code - 1];
}
);
}else{
document.getElementById('geo_loc').innerHTML="您的瀏覽器不支持地圖定位";
}

function getAddress(latitude,longitude){
var geocoder;
var map = new AMap.Map("container", {
resizeEnable: true,
zoom: 18
})
var lnglatXY = [longitude,latitude];//需轉爲地址描述的座標
//加載地理編碼插件
var geocoder;
AMap.service(["AMap.Geocoder"], function() {
geocoder = new AMap.Geocoder({
radius: 1000,
extensions: "all"
});
//逆地理編碼
geocoder.getAddress(lnglatXY, function(status, result){
//取回逆地理編碼結果
if(status === 'complete' && result.info === 'OK'){
geocoder_CallBack(result);
}
});
});
}
function geocoder_CallBack(data) {
var address = data.regeocode.formattedAddress; //返回地址描述
document.getElementById("result").innerHTML = address;
}
相關文章
相關標籤/搜索