我有一張地圖,我通過將不同顏色的區域轉換爲路徑從柵格圖形轉換爲SVG文件。Point in Polygon檢查SVG和JavaScript?
我知道如何在給定邊數組的基礎上進行多邊形檢查,但svg:path
元素表示多個多邊形以及掩碼(以解釋海等),並通過解析d
屬性來提取該信息似乎相當嚴厲。
有沒有一個JS庫,允許我簡化檢查?我基本上想創建隨機點,然後檢查它們是否在陸地上(即多邊形內)或水(即外部)。
由於SVG元素似乎允許鼠標事件處理,所以我認爲這應該不是什麼大問題(也就是說,如果您可以判斷鼠標指針是否位於元素頂部,那麼您已經解決了點多邊形問題)。
編輯:有點複雜的事情,我應該提到svg:path
元素似乎是基於曲線而不是線條,所以只解析d
屬性創建一個邊緣數組似乎不是一個選項。
由於元素可能需要fill
屬性,所以在畫布上渲染SVG並在給定點查找像素的顏色值的貧民窟方法可能有效,但這似乎是一種非常非常糟糕的方式做到這一點。
在完成SVG規範並花了一個小時使用Chrome的JavaScript控制檯之後,似乎最大的問題是我有一個'svg:path'元素,而不是一個普通的形狀元素。否則,可以使用'svg.checkIntersection'和1x1'svg:rect'(假設它適用於區域而不是輪廓)。如果您正在尋找任何形式的抽象,SVG API似乎沒有什麼幫助。 – 2010-11-13 23:59:10