2013-06-20 57 views
-1

在我的JavaScript應用程序中,我有超過30多個多邊形。他們是這樣定義的:檢查哪個多邊形位於內部的有效方法

polygons:[ 
{name:'xx',bounds:[20,20,60,20,50,40,30,10...],minzoom:0,maxzoom:5}, 
{name:'yy',bounds:[.....],minzoom:6,maxzoom:8}, 
........ 
] 

現在給予一定的點狀[10,10]變焦4

這是快速的方式來檢查其多邊形這點位於裏面?

我的第一個想法是迭代多邊形,並檢查點是否在多邊形內。

然後,這個問題來了一個點在多邊形問題,其中有很多答案在stackoverflow。

我只是想知道是否有其他方法?

+0

我不明白**沒有合理的評論投票的**家在想什麼。 – hguser

回答

2

假設多邊形不重疊(或者,如果他們這樣做,你只是在最上面的多邊形有興趣),你可以採用「點在多邊形」的解決方案,包括一個帆布:

  • 創建一個足以容納所有多邊形的畫布。
  • 繪製每個多邊形以不同的顏色,一個接一個
  • 後,查看像素是什麼顏色的點在哪裏位於
  • 這會告訴你這是那裏的多邊形。

注意,你甚至不需要他們是人類區分顏色,你可以從字面上使用#000000#000001#000002等,並使用顏色的十六進制代碼爲多邊形的指數。

+0

有趣的做法:) – alex

+0

@Kolink:我從來沒有聽說過的好主意。但是如何縮放?以三個多邊形爲例:'[{name:'p1',bounds:[ - 180,-90,180,90],minzoom:0,maxzoom:5},{name:'p2',bounds:[ - 180, - 90,0,90],MINZOOM:6,MAXZOOM:8},{名稱: 'P3',界限:[0,-90,180,90],MINZOOM:6,MAXZOOM:8}]'。現在,縮放5的給定點[-170,10]將位於'p1'和[-170,10],縮放6將位於'p2'。[170,10]縮放6將位於' p3'。 – hguser

相關問題