JSNI를 사용하여 응용 프로그램 내에서 Google Map을 표시하려고합니다. 내 index.html 페이지에서 스크립트를 정의했습니다.GWT : JSNI 함수 호출 getElementById() Null을 반환합니다.
다음<g:HTMLPanel ui:field="mapboxV3ContentPanel">
<!-- div for display of the actual map -->
<div id="map"><!-- --></div>
</g:HTMLPanel>
가 initializeMap() 기본 기능입니다 :
private native void initializeMap() /*-{
var latLng = new $wnd.google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latLng,
mapTypeId: $wnd.google.maps.MapTypeId.ROADMAP
};
var mapDiv = $doc.getElementById('map');
if (mapDiv==null) {
alert("MapDiv is null!");
}
var map = new $wnd.google.maps.Map(mapDiv, mapOptions);
}-*/;
불행하게도, mapDiv가 null 여기
은 (필수까지 냈다)을 uibinder 정의입니다. 밖에 도움이 필요 하신가요?gwt-maps 및 gwt-maps-v3 프로젝트에 대해 알고 있습니다. 첫 번째 버전은 API의 v2 만 지원하며 gwt-maps-v3은 저에게 적합하지 않으므로 JSNI 방식을 사용합니다.
@ Jason :'initWidget (...) '바로 뒤에'initializeMap()'을 넣는 것이 너무 빠르며 작동하지 않습니다. (내 대답에 추가 한 마지막 단락을 참조하십시오.) –
좋아, 너무 빨리 읽고 다른 의견을 삭제했습니다. 만약 내가 생성자에서 그것을 할 수 없다면, 그것을 할 수있는 가장 좋은 장소는 어디입니까? – Jason
@ Jason : 제 생각에 가장 좋은 장소는 생성자에 대한 호출이 끝난 직후입니다. 그리고 위의 예제에서와 같이 위젯이 문서에 추가되었습니다. –