2017-07-07 35 views
1

go.jsをleaflet.jsと組み合わせて使用​​して地図にジオメトリオブジェクトを表示したい ジオメトリオブジェクトが地理的位置に固定されていることが重要です。私は単純にピクセル座標を緯度/経度の地理座標に変換します。SVGパスからピクセル座標を取得する方法String

しかし、いくつかの幾何学的オブジェクトでは、すべての必要な地理座標を取得するのは簡単ではありません。

"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" 

だけでなく、中間点のピクセル座標:ポリゴンの は、私のようなSVG-パス文字列を取得します。 This is the polygon using the SVG-Path from above

だから、すべてのコーナーポイントのピクセル座標が必要です。 SVGパスをどのようにピクセル座標に変換できるか、ご意見やご提案はありますか?

あなたが私を助けることを願っています。

よろしくお願いいたします。

enter image description here

+0

[this](https://stackoverflow.com/questions/12788422/svg-coordinate-systempoint-vs-pixels)リンクを確認しましたか? SVG座標点とピクセルの間の相関関係を見つけるのに役立つかもしれません –

+0

指定したパスが無効です –

答えて

1

あなたはShape.geometryStringあなたが投稿するものですShapeを保持GoJS Part(またはNode)を持っていますか?

もしそうなら、Shape.geometryを見て、そのGeometry.figures 'PathFigureとそのPathSegmentを見てみることをお勧めします。これらのポイントのそれぞれについて、Part.positionShape.strokeWidthの半分を加えてGoJSドキュメント座標に変換することができます。リーフレットマップのcontainerPointToLatLngメソッドを呼び出すことによって、ドキュメント座標をLatLngに変換できます。

+0

提案はうまく聞こえますが、シェイプオブジェクトとそのジオメトリを取得する方法がわかりません。 diagram.findNodeForData(e).geometryは未定義です。 Shape.geometryを取得するにはどうすればよいですか? –

+0

'diagram.findNodeForData'はヌルではなくノードを返しましたか?その場合、興味のあるジオメトリを保持しているノードの内部にあるシェイプを見つける必要があります。これは、テンプレートの定義方法によって異なります。それはノード内の唯一のオブジェクトであるかもしれません。その場合、それはちょうど 'node.elt(0)'です。 –

関連する問題