? ? ? ?在 iOS 11 系統上訪問JS API定位業務失敗怎么解決?
? ? ? ?蘋果新發的 iOS 11 操作系統的一大特性是對 http 形式訪問頁面的限制變得非常嚴格(相比iOS 10 和 iOS 9)。高德提供的JS API功能均支持http和https兩種協議訪問,在iOS 11操作系統上推薦使用https形式訪問功能頁面和接口。
? ? ? ?具體實施步驟:
1、引進JS API文件,最好下載到本地。
HTML
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.0&key=您申請的key值"></script>
? ? ? ?請確保進入的JS API是1.4.1或者更高版本。v=1.4.0表示的是1.4.0版本,引入時請更新為1.4.1版本或者下載對應代碼到本地后再引入。
2、使用定位的完整代碼如下:
//獲取用戶所在位置的經緯度
var get_position = function(calltype,signdata,qrcodeID,codeBtnFlag){
var map,geolocation;
//加載地圖,調用瀏覽器定位服務
map = new AMap.Map('container',{
resizeEnable: true
});
map.plugin('AMap.Geolocation',function(){
//geolocation = new AMap.Geolocation({
//獲取經緯度等待的時間
//timeout: 4000//此為設置的超時毫秒數。若在指定時間內未定位成功,返回超時錯誤信息“TIMEOUT”,默認值為無窮大
//});
geolocation = new AMap.Geolocation();
//判斷是否是ios系統,如果是,則調用遠程定位方法
if (AMap.UA.ios) {
//使用遠程定位,見 remogeo.js
var remoGeo = new RemoGeoLocation();
//替換方法
navigator.geolocation.getCurrentPosition = function() {
return remoGeo.getCurrentPosition.apply(remoGeo,arguments);
};
//替換方法
navigator.geolocation.watchPosition = function() {
return remoGeo.watchPosition.apply(remoGeo, arguments);
};
}
map.addControl(geolocation);
//詢問是否允許獲取地理信息
geolocation.getCurrentPosition();
//定位成功,返回經緯度信息
AMap.event.addListener(geolocation,'complete', onComplete);
//定位失敗,返回定位出錯信息
AMap.event.addListener(geolocation,'error',onError);
});
//解析定位結果
function onComplete(data) {
var qiandao_lng = data.position.getLng();
var qiandao_lat = data.position.getLat();
//利用經緯度,do something
}
//解析定位錯誤信息
function onError(data) {
alert('定位失敗');
}
}
? ? ? ?PS:要想在自己的項目中使用地圖相關功能,可通過調用官方地圖接口API,就可以使用其提供的功能,百度、騰訊、高德、谷歌等都有提供,至于使用哪一種看具體項目需求。