2014-03-03 3 views
1

객체 인스턴스를 제어하지 않고 (및 초기화) 기존 Google지도 객체에 KML 레이어를 추가하려고합니다.인스턴스없이 jQuery Google지도 객체 주소 지정

은 지금까지 나는 개체 (DOM)에 있음을 알아 낸 : window.google.maps ...

이가 (좋아, 이것은 단지 생성자가 아닌 렌더링지도 객체 자체입니다) 내가이 google.maps.Map 개체의 기존 인스턴스에 추가 할 (?) :

var kmlUrl = 'http://.../polygon-simple.kml'; 

var kmlOptions = { 
    suppressInfoWindows: false, 
    preserveViewport: true 
}; 

var kmlLayer = new window.google.maps.KmlLayer(kmlUrl, kmlOptions); 

Map 객체를 포함하는 페이지는 호스팅 업체에서 제공하고 객체를 생성하는 자신의 jQuery 위젯의 사용합니다 . html-body 내부에 자바 스크립트를 추가 할 수 있습니다 ("서버 측"에서지도를 만드는 경우도 있습니다). 내가 사용 JS-파일과 CMS-추가 JS의 소스를 변경할 수 없기 때문에

, 나는 기존 개체를 해결해야하고 같은 것을 할 : 내 추가 사항을 적용하고 업데이트 할

kmlLayer.set(obj.Map); 

을 Map 객체입니다. 그러나 분명히 작동하지 않습니다.

나는 전체 웹 사이트를 방화범에 사다가 jQuery 위젯에 의해 생성 된 Map 인스턴스를 찾으려고 시도했다. 사이트의 모든 객체를 탐색했습니다.

Google지도 코드를 완전히 작성하는 것은 선택 사항이 아닙니다. 개발자가 아닌 사용자를 위해 백엔드에서 구성 가능하게 유지해야하기 때문입니다.

문제는 jQuery 위젯 문제로 이동합니다 ... 미리 감사드립니다!

+0

"기존 Google지도 개체"는 어떻게 작성하고 있습니까? window.google.maps ...는 Google Maps Javascript API 코드입니다. – geocodezip

+0

내가 발견 한 것은 :'self.map = new window.google.maps.Map (self.container [0], ...'나는 "self"의 범위를 얻기 위해 좀 더 디버깅을한다. 올바른 방향으로? 코드가 축소되어 읽고 읽기가 매우 어려웠습니다. – Nicolas

+0

좋아, 범위를 얻으려는 것이 좋지 않았습니다. Firebug와 DOM Inspector를 사용하여 제 종류의 "디버깅"에서 완전히 잃었습니다. hoster의 코드, jQuery 및 모든 Google API는 내 작은 JS 지식을 위해 무겁다. 어떤 아이디어가 있습니까? 다른 유용한 브라우저 도구 일 수도 있습니다. – Nicolas

답변

0

window.google.maps.Map은지도 객체가 아니며, 상기 객체의 생성자입니다. 객체 자체는 다른 성 (변수)에 있습니다.

obj instanceof google.maps.Map 

은 개체가 googlemaps Map 개체 인 경우 true를 반환해야합니다. 변수를 실제로 찾을 수없는 경우 페이지의 모든 객체를 반복적으로 탐색하여이 행에 true를 반환하는 객체를 찾는 루프를 작성할 수 있습니다. 크롬 디버거에서 보조 노트로

는 Map 객체는 다음과 같이 나타납니다 map

이지도 유형이 Google지도 라이브러리가

을 축소 된 있기 때문에 이것이 오히려 이상하다 "그들을"이라고 말했다
+0

이미 사이트의 모든 개체를 탐색했지만 그 중 아무 것도 window.google에서 "파생 된"사본으로 보이지 않습니다. .maps.Map 생성자.그것은지도 생성자가 상속 된 객체의 프로토 타입이기 때문에 복사본처럼 보일 것입니다. – Nicolas

+0

@ user3375175 내 대답을 – Hoffmann

+0

업데이트했습니다. 다시 한번 사이트의 모든 개체를 탐색했습니다. 아무도 일치하지 않습니다 :(나는 더 많은 조사를했고, Map 객체는 hoster에 의해 작성된 jQuery 위젯을 통해 생성된다는 것을 알았습니다.)'self'의 범위는 jQuery 위젯의 객체 생성 안에 있습니다. 위젯 객체는'$ (": data ('ui-externalcontentUiMaps') ')')를 다루는 jQuery를 통해 위젯 객체를 가져옵니다. 그러나 여전히 Map 객체 자체에 접근 할 수 없습니다. [Hoster의 JQ 위젯 소스] /helpcenter.epages.com/Doc/ver_6_17_3/epages/jQuery/source/maps.html) – Nicolas