2017-07-07 176 views
1

我想在地圖上使用go.js和leaflet.js結合顯示幾何對象 幾何對象堅持自己的地理位置對我來說很重要。我只是將像素座標轉換爲緯度/經度座標。如何從SVG路徑獲取像素座標字符串

但是,對於某些幾何對象,獲取所有必需的地理座標並不容易。 對於多邊形我得到一個SVG路徑字符串,如:

"F M54 77 L39 128 L0 146 L18 178 L45 215 L87 220 L79 321 L79 400 L153 371 L246 340 L296 325 L332 255 L324 207 L355 164 L338 138 L368 105 L380 23 L336 0 L282 35 L222 10 L147 10 L95 38 L60 44z" 

以及中間點的像素座標。 This is the polygon using the SVG-Path from above

所以我需要每個角點的像素座標。 你有什麼想法或建議如何將SVG路徑轉換爲其像素座標?

希望你們能幫助我。

此致敬禮!

enter image description here

+0

你檢查了[this](https://stackoverflow.com/questions/12788422/svg-coordinate-system-points-vs-pixels)嗎?也許這可以幫助您找到SVG座標點和像素之間的相關性 –

+0

您提供的路徑無效 –

回答

1

你有一個GoJS Part(或Node),其持有ShapeShape.geometryString是你貼什麼?

如果是這樣,我建議你看看Shape.geometry並看看它的Geometry.figures'PathFigure s和它們的PathSegment s。對於每個點,您可以通過添加Part.position加上Shape.strokeWidth的一半來將其轉換爲GoJS文檔座標。然後,您可以通過調用Leaflet地圖的containerPointToLatLng方法將文檔座標轉換爲LatLng。

+0

您的建議聽起來不錯,但我不確定如何獲取形狀對象及其幾何圖形。 diagram.findNodeForData(e).geometry未定義。 如何獲得Shape.geometry? –

+0

'diagram.findNodeForData'是否返回一個Node而不是null?如果是這樣,那麼你需要找到Node中的Shape,它包含着你感興趣的Geometry,這取決於模板是如何定義的。它可能是節點中的唯一對象,在這種情況下,它只是'node.elt(0)'。 –