【问题标题】:Search String Value placemarker in Google Earth API KML File?在 Google Earth API KML 文件中搜索字符串值地标?
【发布时间】:2013-04-11 04:43:19
【问题描述】:

尝试为 Google Earth API javascript 插件创建搜索框 我能够解析KMLFile 并加载到 GE API,现在我必须通过 KML 加载的 Placemarker 名称嵌入搜索。

使用纬度和经度的代码

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

LookAt 是否有可能使用 Placemarker Name(字符串值)而不是使用 LAT、LONG 进行搜索?

【问题讨论】:

    标签: c# javascript kml google-earth google-earth-plugin


    【解决方案1】:

    是的,有几种方法可以做到这一点,具体取决于您的设置。

    一种通用的方法是为每个地标指定一个唯一的 ID,然后使用该 ID 来查看它。

    例如,假设您有以下 kml 地标,并且您已从 url http://localhost/foo.kml 加载到 api 中

    <?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>
    

    然后您可以像这样“查看”地标myPlacemark

    var placemark = ge.getElementByUrl('http://localhost/foo.kml#myPlacemark');
    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);
    

    可以创建一个简单的函数,这样您就可以简单地传递正确的 ID 来查看从 KML 加载的具有 ID 的任何点地标。

    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 函数来查找 lookAtcamera 元素,或者也可以处理其他类型的对象 - 例如多几何等。

    【讨论】:

      猜你喜欢
      • 2013-11-30
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多