使用百度地圖定位當前城市,在瀏覽器中可以,但是在安卓webview中定位失效
阿新 • • 發佈:2019-02-14
使用百度地圖,定位當前所在城市,發現在瀏覽器中,定位很快,但是把html頁面放到webview中,就一直定位不到座標
function getCurPosition() { var error_msg ; var geolocation = new BMap.Geolocation(); var gc = new BMap.Geocoder(); geolocation.getCurrentPosition(function(r) { // 定位結果物件會傳遞給r變數 if (this.getStatus() == BMAP_STATUS_SUCCESS) { // 通過Geolocation類的getStatus()可以判斷是否成功定位。 var pt = r.point; gc.getLocation(pt, function(rs) { var addComp = rs.addressComponents; var address = addComp.city; alert(address); }); } else { switch (this.getStatus()) { case 2: error_msg = '位置結果未知 獲取位置失敗.'; break; case 3: error_msg = '導航結果未知 獲取位置失敗.'; break; case 4: error_msg = '非法金鑰 獲取位置失敗.'; break; case 5: error_msg = '對不起,非法請求位置 獲取位置失敗.'; break; case 6: error_msg = '對不起,當前 沒有許可權 獲取位置失敗.'; break; case 7: error_msg = '對不起,服務不可用 獲取位置失敗.'; break; case 8: error_msg = '對不起,請求超時 獲取位置失敗.'; break; default: error_msg = '對不起,無法獲取位置.'; break; } layer.closeAll(); layer.open({ content: error_msg, className: 'layer-msg', time: 2 }); } }, function(error) { switch (error.code) { case error.PERMISSION_DENIED: error_msg = "使用者拒絕對獲取地理位置," break; case error.POSITION_UNAVAILABLE: error_msg = "位置資訊是不可用," break; case error.TIMEOUT: error_msg = "請求定位超時," break; case error.UNKNOWN_ERROR: error_msg = "未知錯誤," break; default : break; } layer.closeAll(); layer.open({ content: error_msg+"請手動選擇城市。", className: 'layer-msg', time: 2 }); }, { timeout : 3000, enableHighAccuracy : true, maximumAge : 10000 }); }
後來發現,原來要使webview支援html5定位,需要安卓在呼叫webview前加幾行程式碼,如下:
必須啟用資料庫(可以安卓本地建立資料庫)