지역화 된 kml 파일을 사용하여 엄청난 위치 표시 집합을로드했습니다. (약 1000 kml 파일 생성). 예를 들어, 클릭 한 카메라가 액세스하려는 위치 표시의 위치로 날아갈 때 버튼이 있습니다. 따라서이 장소 표시를 포함하는 kml 파일이이 과정 후에로드 된 것 같습니다. 이것이 5.kml이라고 가정하고 getElementByUrl 메소드를 사용하여 위치 표시 객체를 얻으려고했습니다. 그러나 이것은 효과가 없었습니다. ge.getElementsByType ("KmlPlacemark") 메소드를 사용할 수도 있지만 필요한 placemark 객체를 얻기 위해 루프가 있어야합니다. 이 방법이 효과적이지만 빨리 작동하도록하는 방법을 찾지 못했습니다. 아래 코드는지역 기반 네트워크를 통해 Google 어스 API로 장소 표시에 연결됨 링크 된 kml 파일
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에서 가져온 개체에 액세스하는 방법을 찾았 으면 좋겠습니다. 당신의 대답을 기다리고 있습니다. 감사.
내 문제는 IIS를 통한 파일 액세스 문제였습니다. 나는 그것을 고치고 나의 코드는 예상대로 작동한다. 카메라가 장소 표시를 확대 표시하므로 해당 위치 표시를 포함하는 kml 파일이 검색된 다음 위치 표시의 스타일을 수정할 수 있습니다. 이 기사에서는 ** 표시하기 전에로드 된 KML 파일 **을 수정할 수 없다고 말했지만 현재 KML을로드하고 장소 표시를 표시 한 후에 스타일을 변경할 수있는 것으로 보입니다. 그런데 좋은 기사. –