我正在构建 ac# 应用程序,该应用程序通过 Web 浏览器控件使用 Google Earth 插件。作为应用程序的一部分,我需要能够在地球上的某个区域周围创建一个多选框(想想类似于在文件浏览器中拖动选择多个文件)。
我现在设置它的方式是,c# 代码会跟踪我何时处于选择模式,如果是,第一次左键单击会从谷歌地球插件中拉出该点的经纬度。之后,鼠标移动得到对角的经纬度,然后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,则至少不会崩溃。但是,即使这样做,我也只能看到矩形的右垂直腿。