我正在開發一個基於位置的應用程序,我需要獲取用戶選擇的任何地理位置的附近位置名稱。我正在使用Google Places API這對我來說工作正常。如何在ios中獲取地理位置附近的城市或州名?
唯一的問題是服務返回null
水中的地點。有沒有什麼方法可以檢索附近的水上或海洋地理位置?
我正在開發一個基於位置的應用程序,我需要獲取用戶選擇的任何地理位置的附近位置名稱。我正在使用Google Places API這對我來說工作正常。如何在ios中獲取地理位置附近的城市或州名?
唯一的問題是服務返回null
水中的地點。有沒有什麼方法可以檢索附近的水上或海洋地理位置?
AFAIK API無法做到這一點。 所以,你有兩個選擇,在努力的順序需要:
一個很好的方法可以基於this answer:基本上你可以得到一個帶有多邊形的KML文件。出於性能考慮,您可以將多邊形簡化爲適合縮放級別的程度。現在,如果你的觀點是在其中一個多邊形 - 這是海。你可以遍歷所有的多邊形邊,選擇一個最接近你的點的點,然後在它上面選擇一個點 - 再次離你最近的點 - 然後向多邊形的外面做一個小小的步驟,以獲得一個土地點你可以做一個地理編碼請求。此外,原作者建議您可以使用Haversine公式來確定neares陸地點 - 我並不十分熟悉該裝置。
的缺點是,你必須處理KML,遍歷了大量的多邊形和優化他們(和損失精度這樣做,除了marineregions.org數據和谷歌地方數據之間可能存在差異)
另一個很酷你可以嘗試在可見地圖片段上使用Sobel Filter [邊緣檢測]來確定海岸線的位置(儘管你會在那裏得到一些誤報),然後跟蹤它(如柵格 - >矢量)以獲得一些點和以類似於前一種方法的方式計算最近的陸地位置。這是一個笨拙的想法
對於Sobel邊緣檢測,考慮GPUImage lib - 他們已經實現了過濾器,並且它可能會快速工作,因爲lib會在GPU上執行所有計算。
UPD原來也有一個名爲Koordinates具有可海岸線的數據服務,檢查the answer here