C# 在Google Earth API KML文件中搜索字符串值placemarker?

C# 在Google Earth API KML文件中搜索字符串值placemarker?,c#,javascript,kml,google-earth,google-earth-plugin,C#,Javascript,Kml,Google Earth,Google Earth Plugin,正在尝试为谷歌地球APIjavascript插件创建搜索框 我能够解析KMLFile并在GE API中加载,现在我必须嵌入由KML加载的Placemarker名称搜索 使用Lat和Long的代码 var lookAt = ge.createLookAt(''); lookAt.set(point.y, point.x, 600, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 00, 0); ge.getView().setAbstractView(lookAt); 是否

正在尝试为
谷歌地球API
javascript插件创建搜索框 我能够解析
KMLFile
并在GE API中加载,现在我必须嵌入由KML加载的Placemarker名称搜索

使用Lat和Long的代码

var lookAt = ge.createLookAt('');
lookAt.set(point.y, point.x, 600, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 00, 0);
ge.getView().setAbstractView(lookAt);

是否可以使用Placemarker Name(字符串值)而不是LAT,LONG进行搜索?

是的,根据您的设置,有几种方法可以做到这一点

一种通用的方法是给每个地点标记一个唯一的ID,然后使用该ID查看它

例如,假设您有以下kml placemark,并且您已经从url
http://localhost/foo.kml

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark id="myPlacemark">
    <name>Myplacemark</name>
    <Point>
      <coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
    </Point>
  </Placemark>
</kml>
可以创建一个简单的函数,这样您就可以简单地传入正确的ID,以查看从KML加载的具有ID的任何点placemark

var myLookAt = function(id) {
  var placemark = ge.getElementByUrl(id);
  if('getGeometry' in placemark && 
    placemark.getGeometry().getType() == 'KmlPoint') {
    var point = placemark.getGeometry();
    var lookAt = ge.createLookAt('');
    lookAt.set(point.getLatitude(), point.getLongitude(), 600, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 00, 0);
    ge.getView().setAbstractView(lookAt);
  }
};

// useage
myLookAt('http://localhost/foo.kml#myPlacemark');
显然,您可以更改
myLookAt
函数来查找
lookAt
camera
元素,或者处理其他类型的对象,例如多几何体等

var myLookAt = function(id) {
  var placemark = ge.getElementByUrl(id);
  if('getGeometry' in placemark && 
    placemark.getGeometry().getType() == 'KmlPoint') {
    var point = placemark.getGeometry();
    var lookAt = ge.createLookAt('');
    lookAt.set(point.getLatitude(), point.getLongitude(), 600, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 00, 0);
    ge.getView().setAbstractView(lookAt);
  }
};

// useage
myLookAt('http://localhost/foo.kml#myPlacemark');