2013-11-04 91 views
2

我開始使用MapBox iOS SDKMapBox水/土地檢測

是否有任何可能的方式通過座標查詢MapView並獲取地形類型(水,陸地)?

我一直在閱讀API doc很長一段時間了,但無法弄清楚。 我知道有(interim) solutions可以使用Google的web服務,但我需要這個脫機工作。

雖然我沒有綁定到MapBox(但我喜歡它),但是謝謝你的提示!

回答

1

無需鑽研運行時的造型(見我對方的回答,假鉛):非常簡單的方法,使用mapView.visibleFeatures(at: CGPoint, styleLayerIdentifiers: Set<String>)等效的JavaScript API是queryRenderedFeatures

func mapView(_ mapView: MGLMapView, regionDidChangeAnimated animated: Bool) 
{ 
    let features = mapView.visibleFeatures(at: mapView.center, styleLayerIdentifiers: ["water"]) 
    print(features) 
} 

實施例輸出到處移動時:

[] 
[] 
[] 
[<MGLMultiPolygonFeature: 0x170284650>] 

如果空的結果:沒有水,如果多邊形:水。

+0

另請參見[android](https://stackoverflow.com/a/42728928/4601340) –

0

我做了一個示例代碼,可以幫助你一點點。 https://github.com/P0nj4/Coordinates-on-water-or-land

給出一個座標,應用程序檢查谷歌是否是土地或水。

+0

感謝您的輸入,但此機制的一個必要功能是離線使用,因爲這將用於帆船,其中沒有提供足夠快的互聯網連接來實現針對web服務的路由算法。我實際上使用OSM數據實現了它。它可以輕鬆地在內存中快速運行。在我的上面的答案中查看我的鏈接。 – thomas

1

這似乎是可能的:

上找到https://www.mapbox.com/ios-sdk/api/3.5.0/runtime-styling.html

有適應根據用戶(公園,城市,水等)不幸的是我不」的位置的UI的可能性不知道該怎麼做! (因爲我發現就會立即更新)

地圖交互您可以自定義地圖,具有動態地根據您的用戶採取的行動作出迴應的地步。 在用戶駕車時增加街道的文字大小,強調根據用戶偏好量身定製的興趣點 ,或者如果用戶在公園,路徑,地標或河流時更改用戶界面 。

UI GIF demo