마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

WebView 에서 자바스크립트 함수를 호출 할 때..

0 추천

현재 구글 api v3를 연동중입니다.

 

샘플로 기본 map을 불러오고 그 이후에 클릭이벤트로 함수를 이용한 이벤트도 처리했는데

map을 불러옴과 동시에 이벤트를 주려니 되질 않네요.

 

HTML의 함수는 아래에 기재를 해놓았고.. 구글에서 제공하는 기본적인 맵 뷰와 센터로 이동하는 함수를 짜본 것입니다.

html, javascript를 별도로 공부해본적이 없어 기본적으로만 작성해보았습니다.

 

현재는 메인 호출 시  initialize를 호출해서 기본 맵을 보여주고.. 앱에서 버튼을 만들어 그 버튼을 클릭했을 때

wv_map.loadUrl("javascript:CenterMapView('" + lat + "','" + lng + "')");

다음과 같이 이벤트를 줘서 맵의 중앙을 갱신합니다.

 

하고자 하는 것은.. 기본적으로 메인 호출 시 바로 맵이 해당 lat 과 lng로 보여주기를 하려는데

한번에 되지를 않네요.

 

자바스크립트를 알면 아주 기본적일 문제겠지요..

webview와 자바스크립트 연동을 많이 알아보고 여기까지 왔는데 막상 개발에 직접 뛰어들려니 살붙이는게 어렵습니다.

조언을 구합니다.

 

현재는 메인액티비티 호출 시 

v_map.loadUrl("file:///android_asset/clickmarker.html");

wv_map.getSettings().setJavaScriptEnabled(true);

를 하고
 
버튼 클릭했을 시 

wv_map.loadUrl("javascript:CenterMapView('" + lat + "','" + lng + "')"); 를 실행합니다.

 

하고자 하는 것은..

v_map.loadUrl("file:///android_asset/clickmarker.html"); 부분에서 바로

wv_map.loadUrl("javascript:CenterMapView('" + lat + "','" + lng + "')"); 이와 같이 되기를 하려합니다..

 

 

 

 

 

 

 

function initialize() {
var mapOptions = {
zoom : 8,
center : new google.maps.LatLng(-25.363882, 131.044922)
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
 
google.maps.event.addListener(map, 'click', function(e) {
placeMarker(e.latLng, map);
});
}
 
 
 
 
 
function CenterMapView(latitude, longitude) { // 앱에서 받은 위경도로 센터이동
var mapOptions = {
zoom : 12,
center : new google.maps.LatLng(latitude, longitude)
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
 
window.android.setMessage("받은 위도 : " + latitude);    // html 에서 앱으로 메시지 전송 (앱에서는 Handler를 이용해 받는다.)
 
}

 

개발자초심 (21,220 포인트) 님이 2014년 7월 14일 질문

1개의 답변

0 추천

웹뷰에 WebViewClient를 셋팅하면 onPageFinished(Webview view, String url) 콜백을 받을 수 있습니다.

앞의 file:///android_asset/clickmarker.html 페이지의 로딩이 끝난 시점에

wv_map.loadUrl("javascript:CenterMapView('" + lat + "','" + lng + "')"); 를 호출하시면 됩니다.

b22n (22,940 포인트) 님이 2014년 7월 15일 답변
답변 감사합니다.
덕분에 메소드는 알게되었는데, 이해가 잘 안되네요.
현재도  file:///android_asset/clickmarker.html을 불러온 후에
"javascript:CenterMapView('" + lat + "','" + lng + "')" 를 불러오도록 했었습니다.
WebViewClient 를 어떻게 활용해야될지 감이 안오네요.
조언좀 더 구할 수 있을까요?
아.. WebViewClient 라는 소스를 던져주셔서 감을 잡았습니다.
웹뷰가 생성되고 완료될때 각 각의 이벤트를 잡아낼 수가 있네요.
좋은정보 감사합니다. 배워갑니다..
...