Доступ к метке через Google Планета Земля API через региональную сеть Связанные файлы kml - PullRequest
1 голос
/ 06 января 2012

У меня огромный набор меток, загруженных с использованием региональных файлов kml. (около 1000 кмл файлов). Например, у меня есть кнопка, при нажатии на которую камера летит в местоположение метки, к которой я хочу получить доступ. Поэтому я думаю, что файл kml, который включает эту метку, загружается после этого процесса. Допустим, это 5.kml, и я попытался получить объект метки, используя метод getElementByUrl. Но это не сработало. Я также могу использовать метод ge.getElementsByType ("KmlPlacemark"), но мне нужен цикл, чтобы получить нужный объект метки. Это работает, но я не мог найти способ заставить это работать быстро. Ниже мой код

google.earth.addEventListener(ge.getView(), 'viewchangeend', function() {                 
      // after button click and camera centered on the placemark with id 1767
      var p = ge.getElementByUrl('http://localhost/Test/5.kml#1767');
      alert(p.getId());  // this does not work because p is null
      var placemarks = ge.getElementsByType('KmlPlacemark'); 
      for (var i = 0; i < placemarks.getLength(); ++i) {
         var placemark = placemarks.item(i);
         if(placemark.getId() == 1767)
         {              
            alert(placemark.getId()); // this works      
            return;
         }
     }      
});

 function button_click()
{
    var camera = ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND);
    camera.setLatitude(30);
    camera.setLongitude(50);
    camera.setAltitude(2000);
    ge.getView().setAbstractView(camera);   
  }

Хотелось бы, чтобы я нашел способ доступа к объекту, импортированному из KML (когда регион становится активным). Жду ваших ответов. Спасибо.

1 Ответ

1 голос
/ 09 января 2012

NetworkLink не загружает файлы в DOM, поэтому getElementByUrl не находит искомую метку. Вам нужно будет получить KML. Эта статья должна быть полезна для объяснения различных способов загрузки KML в API Google Планета Земля.

...