關於web移動端定位

最近在作一個搜索附近3千米全部超市信息(已經錄入數據庫的超市信息)的功能。思路很簡單只是獲取用戶當前地理位置(經緯度),經過sql語句篩選出3千米範圍內的全部超市信息,而後傳遞到前臺頁面展現出來。可是我是第一次經過移動端web獲取用戶地理位置,遇到不少的問題,我以爲我有必要記錄一下,一方面彰顯本身的成就,一方面想把經驗分享給你們。
移動web端獲取用戶地理位置很麻煩,由於涉及用戶隱私,因此web獲取用戶地理位置的方式不多並且精確度很低。我剛知道要作定位的功能,第一時間去看了百度地圖API,找到了web瀏覽器定位,說是瀏覽器定位其實也是經過用戶IP定位,我很快就完成這個所謂的搜索功能,以爲這真是太簡單了。可是事實並非如此,我最開始測試的時候是用WiFi測試的,測試的結果發現精確度有點低,並且安卓端和ios端數據顯示還不同,根據咱們的測試報告上說應該是ios更精準一些,這些還不算什麼,由於咱們只是搜索三千米範圍內的數據有些偏差也能夠,可是一個致命的問題讓我不得不放棄了百度地圖。
這個致命問題就是,只要鏈接移動數據(不使用WiFi)所有都定位到合肥去了(測試使用的是安徽手機號),我百思不得其解,通過一番測試思考才明白所謂的ip定位是什麼意思,也明白了所謂移動數據是什麼?所謂的ip定位就是經過路由地址定位,移動網絡就是一個大的WiFi網絡環境,使用移動數據定位會定位到這個WiFi網絡的路由所在地,也就是合肥。這一結果讓我心涼,移動網絡不能定位這讓咱們的需求也成了泡影,我不得不放棄已經完成的功能另外找尋找解決方案。
經過不停的搜索、尋找資料、詢問前輩,我找到了第二種解決方案——html5定位,這個比以前調用百度地圖的API簡單多了,我很快又一次完成了這個功能。html5定位不管是鏈接WiFi仍是移動網絡都能定位到用戶所在位置,可是一樣也出現一個問題,使用WiFi比使用移動網絡精準,可是這不影響咱們的功能需求,算是符合咱們的要求,但測試人員並不打算放過我,最新的測試報告上說IOS端會彈出這麼一段話Origin does not have permission to use Geolocation service,翻譯過來就是請求源沒有權限使用地理定位服務,我一臉懵逼。找了不少資料才明白,蘋果公司認爲http請求都是不安全的因此拒絕爲http請求提供地理定位服務,而咱們公司使用的就是http請求。
我這時候有點絕望了,瘋狂的找解決方案,最後還真讓我找到了——騰訊地圖。我一直以爲騰訊很坑爹,網頁遊戲都被人罵,可是此次不得不感謝它。騰訊地圖也是使用html5定位技術但人家是https請求,因此騰訊抓住了這個機會,創建一個相似中轉站的請求轉發(我我的的理解)。咱們的請求會到騰訊的中轉站(https)而後在(https)返回給咱們這樣咱們的請求就是https請求IOS用戶端就會爲咱們的定位提供地理位置定位服務了,此次測試終於過了。
雖然過程很曲折可是結果還算不錯,總算知足了定位的功能需求,也收穫了不少東西。
相關文章
相關標籤/搜索