2

マーカーがGoogleマップのポリゴン内にあるかどうかを検出する方法に関するドキュメントはたくさんあります。ただし、私の質問は、ポリゴン内に(理想的にはエッジから可能な限り遠くに)マーカーを任意に配置するにはどうすればよいかということです。

ポリゴンのポイントの平均緯度と経度を計算しようとしましたが、一部の非凹ポリゴンでは明らかに失敗します。

エリアの重心を計算することも考えましたが、明らかに同じことが起こります。

何か案は?99%の確率で機能するとしても、試行錯誤のアプローチは避けたいと思います。

4

1 に答える 1

2

全体的な目標が正確に何であるかに応じて、これにアプローチできるいくつかの異なる方法があります。

1つのアプローチは、ポリゴンの三角形分割を作成し、三角形の1つの内側にマーカーを配置することです。最適性についてあまり心配していない場合は、最大の三角形の図心を選択するなどの単純なヒューリスティックを使用できますが、これによって必ずしもポリゴンのエッジから最も遠いポイントが得られるとは限りません。ポリゴンの三角形分割にはいくつかのアルゴリズムがあります。耳を切り取るまたは制約されたドロネー三角形分割がおそらく進むべき道であり、CGALTriangleなどの優れたライブラリがいくつか存在します。

最適な配置を見つけることに興味がある場合は、ポリゴンの内側軸または直線スケルトンのいずれかを使用して、スケルトンベースのアプローチを使用できる場合があります。内側軸はポリゴンのエッジから等距離にある曲線のセットですが、直線のスケルトンは関連する構造です。具体的には、これらのタイプの構造を使用して、エッジから最も遠いポイントを見つけることができます。ストレートスケルトンに基づくアプローチを使用したGISのラベル配置アプリケーションについては、これを確認してください。

お役に立てれば。

于 2012-12-20T10:02:41.657 に答える