2016-02-29 84 views
1

我在openstreetmap上創建了一個區域(多邊形),我想檢查當前的lat-long是否在該多邊形之內。我正在使用leafletjs。這裏是我的鏈接 - >http://imaker.asia/leaflet/area.htmlopenstreetmap:檢查latlong是否在多邊形之外(區域)

+2

請在此處添加有意義的代碼和問題描述。不要只是鏈接到需要修復的網站 - 否則,一旦問題解決,這個問題將會給未來的訪問者帶來任何價值。發佈證明你的問題的[mcve]會幫助你得到更好的答案。欲瞭解更多信息,請參閱[我網站上的某些內容不起作用。我可以只粘貼一個鏈接嗎?](http://meta.stackexchange.com/questions/125997/)謝謝! – Cerbrus

回答

-1

不需要使用任何其他的https://github.com/Leaflet/Leaflet api。只需使用polygon.getBounds()。contains(e.latlng)函數

+0

對不起,解決這個答案的簡單性,但是...... polygon.getBounds()給你包含矩形。所以如果你的多邊形小於這個矩形(例如它是一個三角形),那麼這些邊界包含這些點的區域,而不是多邊形......爲了更加明確,如果多邊形是一個圓盤,邊界包含4個角包含矩形(在這種情況下爲正方形),但顯然該磁盤不包含它們。 – ghybs

+0

好吧,讓我檢查它 – amisha

+0

@ghybs好吧你聽起來邏輯上正確。如果該功能在所有情況下都不起作用,那麼完美的解決方案是什麼? –

1

我認爲Leaflet-PIP庫(點多邊形)應該給你你正在尋找的功能。

var gjLayer = L.geoJson(statesData); 
var results = leafletPip.pointInLayer([-88, 38], gjLayer); 
// results is an array of L.Polygon objects containing that point 

然後只要檢查你的多邊形是否在結果數組內。

注意,第一參數可以是一個L.LatLng對象(例如,使用myMarker.getLatLng())或座標的數組,但它必須在順序[Lng, Lat],對單張的通常[Lat, Lng]的相反。

第二個參數必須是GeoJSON組圖層。

0

小冊子的選項是Turf.js。它提供了更多的空間功能,但沒有與Leaflet緊密集成(需要開發人員直接處理座標)

相關問題