3

Google Earth APIPlugin for 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);

LookAtLAT、LONG を使用して検索する代わりに、Placemarker Name (文字列値) を使用する可能性はありますか?

4

1 に答える 1

0

はい、セットアップに応じて、これを行う方法がいくつかあります。

一般的な方法の 1 つは、各目印に一意の ID を付与し、その ID を使用して目印を確認することです。

たとえば、次の kml 目印があり、URL から API にロードしたとします。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>

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 を渡すだけで、ID を持つ KML から読み込まれた任意の場所の目印を確認できます。

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-04-11T23:30:25.553 に答える