我正在構建客戶端將在其頁面上安裝的小型腳本。地理位置不是必需的,但如果它存在的話,它會很好。有沒有一種方法可以讓我檢查客戶端頁面是否請求了地理位置信息,如果用戶選擇允許獲取lat而不創建另一個提示?檢查是否允許地理定位並獲取經緯度
回答
這是不可能的地理位置API,但它有可能與新的許可API
,如果你想嘗試接收的座標,但不想打擾與用戶此代碼是非常有用的提示對話框的Cuz座標並不重要,可能也回退到GEOIP
function getCoords(){
return new Promise((resolve, reject) =>
navigator.permissions ?
// Permission API is implemented
navigator.permissions.query({name:'geolocation'}).then(permission =>
// is geolocation granted?
permission.state === "granted"
? navigator.geolocation.getCurrentPosition(pos => resolve(pos.coords))
: resolve(null),
reject) :
// Permission API was not implemented
reject(new Error("Permission API is not supported"))
)
}
getCoords().then(coords => console.log(coords))
這將解決爲null,如果許可尚未被授予蒙上了錯誤,如果一些JavaScript代碼沒有瀏覽器支持並且如果已被授予,則解析爲座標
您可以通過檢查窗口對象來檢測功能是否存在。
if('geolocation' in window){
navigator.geolocation.getCurrentPosition(...);
}
這將導致單個用戶提示詢問用戶他們是否希望與您的頁面共享他們的位置。
如果地理定位在瀏覽器中不可用,則根本無法運行。
編輯 如果您已經提示在此 頁面加載允許地理位置訪問的用戶,也不會再次提示您。如果用戶瀏覽並返回到此頁面,則會重新提示他們。
您可以在該頁面會話期間不提示的情況下對API進行後續調用。
我不認爲他關心瀏覽器是否支持它 - 他想知道,如果瀏覽器支持,他可以在不提示提示的情況下調用'getCurrentPosition()'*,因爲該網站已經引起了這樣的提示之前。 – ThiefMaster 2012-04-09 18:14:39
@ThiefMaster。除非你問這個問題,否則這不是一個倒退。提問者的意圖不明確。但是,在這種情況下,請參閱我的更新。 – tkone 2012-04-09 18:23:55
@TheifMaster那是正確的 – Stefan 2012-04-10 02:44:20
不管你是否被提示似乎取決於瀏覽器和它的隱私設置。 Safari 6有3個設置:每個站點提示一次,每個站點每天提示一次,並且拒絕。 Chrome 23有3種設置:全部允許,請求和拒絕。如果有方法檢查它是否已被允許而不打擾用戶,那麼一定會很好。
- 1. 檢查瀏覽器的地理位置功能並獲取緯度和經度
- 2. 檢查經緯度的地理點是否在shape文件中
- 3. 從Google地理定位API獲取當前經緯度和lng
- 4. 從經緯度獲取位置地址
- 5. 地理位置:獲取緯度和經度與距離
- 6. 檢查位置(緯度經度)是否在KML多邊形內
- 7. 檢查瀏覽器地理位置是否允許?
- 8. 檢查圓形地理圍欄內的地理位置(緯度,經度)
- 9. 檢查圖像中是否存在經度和緯度經度和緯度
- 10. 從沒有谷歌地理定位的地址獲取經緯度
- 11. 獲取位置(經度和緯度)
- 12. 檢查特定的地理位置(緯度和傾向)是否屬於「紐約」?
- 13. Android地理位置打印經緯度
- 14. 地理位置Null經緯度爲
- 15. 是否有API允許您檢查另一個地理位置是否存在?
- 16. 獲取緯度,經度從地址
- 17. 獲取地址的緯度和經度
- 18. 查找子公司經度和緯度(地理位置)
- 19. 地理定位 - 將經度和緯度值分配給變量
- 20. 從鼠標位置獲取地圖緯度經度
- 21. 從經緯度獲取位置名稱
- 22. 獲取當前位置的經緯度
- 23. 獲取緯度和經度
- 24. 獲取經度和緯度
- 25. 檢測W3地理位置是否已被允許
- 26. 從谷歌地圖經緯度獲取位置地址
- 27. 檢查給定的經度和緯度是否在一組緯度和經度在sqlite
- 28. 從mapbox的地址獲取經緯度
- 29. 點擊MapQuest地圖獲取經緯度
- 30. Ios地圖:獲取經緯度
這是一個方便的方法,但由於它是一個相當新的API,提及可能的兼容性問題非常重要。例如:http://caniuse.com/#feat=permissions-api – Mario 2016-04-08 07:17:34