3

WebBrowserコントロールを使用してWinFormsアプリケーションを作成しています。このアプリケーションではGoogleEarthプラグインを使用しており、GoogleEarthにいくつかの目印を作成する必要があります。現在の範囲(ズームレベル)によっては、画面上でいくつかの目印が互いに非常に接近している場合があります(地球が十分にズームアウトされている場合)。この場合、画面上の地図が目印で混雑しないように、目印のすべてではなく一部だけを作成したいと思います。

たとえば、目印を作成したいポイントが1000個あるとします。作成する目印のすべてのポイントをループするとき、各ポイントの緯度/経度をWebBrowserコントロールのクライアント座標に変換して、既に作成されている他の目印に非常に近いかどうかを確認できるようにします。 。他の目印に非常に近い場合は、この目印の作成をスキップします。したがって、ユーザーがある程度ズームアウトした場合、実際に作成される目印の数は1000よりはるかに少なくなる可能性があります(たとえば、400)。

これは私が苦労しているところです。lat/longをGoogleEarthプラグインをホストしているWebBrowserコントロールのクライアント座標に変換する方法があるかどうかはわかりません。マウスイベントの場合、クライアント座標を使用できることはわかっていますが、この場合はマウスイベントは含まれていません。

誰かがこれをどのように達成できるか考えていますか?ありがとう!

4

1 に答える 1

1

問題を解決するために使用しようとしているアプローチは正しくありません。ただし、いくつかのオプションがあります。

現在のアプローチを採用する-あなたには2つの選択肢があります:

  1. 現在のビューに、指定された緯度/経度を画面X/Yに変換するように依頼できます。

    https://developers.google.com/earth/documentation/reference/interface_g_e_view#a8c39d0324f2350c54fe2de981f1be418

  2. GEWindowクラスから発生するKMLマウスイベントの一部として、クライアントのマウス座標を取得できます。

    https://developers.google.com/earth/documentation/reference/interface_g_e_window-members

    起動されるKMLMouseEventには、クライアントのX/Yスペースが含まれます。

    https://developers.google.com/earth/documentation/reference/interface_kml_mouse_event

正しいアプローチは、KMLリージョンタグを目印に追加して、ユーザーがパン/ズームなどを行ったときにプラクマークが表示/非表示になるようにすることです。

http://www.google.com/earth/outreach/tutorials/region.html

于 2012-09-08T22:44:26.890 に答える