Web ブラウザ コントロールを介して Google Earth プラグインを使用する ac# アプリケーションを構築しています。アプリケーションの一部として、地球上の特定の領域の周囲に複数選択ボックスを作成できるようにする必要があります (ファイル ブラウザーで複数のファイルをドラッグして選択するようなものを考えてください)。
私が現在セットアップしている方法では、c# コードは、選択モードになっているときを追跡します。もしそうなら、最初の左クリックで、Google Earth プラグインからそのポイントの緯度経度を取得します。その後、マウスの動きによって反対側の角の緯度経度が取得され、C# コードは次の 2 つの JavaScript 関数を呼び出します。
function clearHighlightBox(){
var placemark = ge.getElementById('DARTselectBox');
if(placemark)
{
ge.getFeatures().removeChild(placemark);
}
}
function setHighlightBox(lat1, long1, lat2, long2){
clearHighlightBox();
var placemark = ge.createPlacemark('DARTselectBox');
var lineString = ge.createLineString('');
var coords = lineString.getCoordinates();
coords.pushLatLngAlt(lat1, long1, 5000);
coords.pushLatLngAlt(lat1, long2, 5000);
coords.pushLatLngAlt(lat2, long2, 5000);
coords.pushLatLngAlt(lat2, long1, 5000);
coords.pushLatLngAlt(lat1, long1, 5000);
placemark.setGeometry(lineString);
ge.getFeatures().appendChild(placemark);
}
まず、目印の ID をこの方法で作成してもうまくいかないようです (ge.createPlacemark('DARTselectBox');)。これを切り替えてすべてをクリアし、Create Placemark 呼び出しから ID を削除すると、少なくともクラッシュしません。ただし、それを行っても、長方形の右の垂直脚しか表示されません。