? ? ? ?在 iOS 11 系統(tǒng)上訪問JS API定位業(yè)務(wù)失敗怎么解決插佛?
? ? ? ?蘋果新發(fā)的 iOS 11 操作系統(tǒng)的一大特性是對 http 形式訪問頁面的限制變得非常嚴(yán)格(相比iOS 10 和 iOS 9)施逾。高德提供的JS API功能均支持http和https兩種協(xié)議訪問,在iOS 11操作系統(tǒng)上推薦使用https形式訪問功能頁面和接口。
? ? ? ?具體實(shí)施步驟:
1琅豆、引進(jìn)JS API文件,最好下載到本地。
HTML
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.0&key=您申請的key值"></script>
? ? ? ?請確保進(jìn)入的JS API是1.4.1或者更高版本阵幸。v=1.4.0表示的是1.4.0版本,引入時(shí)請更新為1.4.1版本或者下載對應(yīng)代碼到本地后再引入芽世。
2挚赊、使用定位的完整代碼如下:
//獲取用戶所在位置的經(jīng)緯度
var get_position = function(calltype,signdata,qrcodeID,codeBtnFlag){
var map,geolocation;
//加載地圖,調(diào)用瀏覽器定位服務(wù)
map = new AMap.Map('container',{
resizeEnable: true
});
map.plugin('AMap.Geolocation',function(){
//geolocation = new AMap.Geolocation({
//獲取經(jīng)緯度等待的時(shí)間
//timeout: 4000//此為設(shè)置的超時(shí)毫秒數(shù)济瓢。若在指定時(shí)間內(nèi)未定位成功荠割,返回超時(shí)錯(cuò)誤信息“TIMEOUT”,默認(rèn)值為無窮大
//});
geolocation = new AMap.Geolocation();
//判斷是否是ios系統(tǒng),如果是旺矾,則調(diào)用遠(yuǎn)程定位方法
if (AMap.UA.ios) {
//使用遠(yuǎn)程定位蔑鹦,見 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();
//定位成功,返回經(jīng)緯度信息
AMap.event.addListener(geolocation,'complete', onComplete);
//定位失敗箕宙,返回定位出錯(cuò)信息
AMap.event.addListener(geolocation,'error',onError);
});
//解析定位結(jié)果
function onComplete(data) {
var qiandao_lng = data.position.getLng();
var qiandao_lat = data.position.getLat();
//利用經(jīng)緯度,do something
}
//解析定位錯(cuò)誤信息
function onError(data) {
alert('定位失敗');
}
}
? ? ? ?PS:要想在自己的項(xiàng)目中使用地圖相關(guān)功能嚎朽,可通過調(diào)用官方地圖接口API,就可以使用其提供的功能柬帕,百度哟忍、騰訊狡门、高德、谷歌等都有提供锅很,至于使用哪一種看具體項(xiàng)目需求其馏。