2017-03-28 4 views
1

, 나는 웹보기를 통해 전단지 맵을 호출 웹뷰 다시로드하지 않고 전단지에 동그라미를 만드는 :다음과 같이 안드로이드 스튜디오에서

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final View rootView = inflater.inflate(R.layout.activity_main, container, false); 
    final WebView webView = (WebView) rootView.findViewById(webview); 

    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    webView.getSettings().setGeolocationEnabled(true); 
    webView.setEnabled(true); 
    webView.setClickable(true); 
    GeoClient geo = new GeoClient(); 
    webView.setWebChromeClient(geo); 
    String origin = ""; 
    geo.onGeolocationPermissionsShowPrompt(origin, this); 
    webView.loadUrl("file:///android_asset/Map.html"); 

    return rootView; 
} 

을 지금을, 나는 가끔 발생시키는 배경 서비스 실행을하고 난 원에 원하는 이런 일이 발생하면지도에 나타납니다. 자바에서 자바 스크립트 함수를 실행하려면, 다음

webView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
      webView.loadUrl("javascript:fireCircle(" + 
        43.0000000 + "," + 
        -79.4000000 + "," + 
        300 + ",\"" + 
        "A CIRCLE!" + "\")"); 
     } 
    }); 

을 사용되는 경우 기능 fireCircle이
function fireCircle(lat, lng, rad, textTitle){ 
     var circleColor = 'red'; 
     var circle = L.circle([lat, lng], rad, { 
       color: circleColor, 
       fillColor: circleColor, 
       fillOpacity: 0.5 
      }) 
     .bindPopup(String(textTitle)) 
     .addTo(map); 
    } 

로 지금까지 읽어 자바 스크립트 전단지, 내가 원에 할 수 있도록 찾은 유일한 방법 (onCreateView는 매번 새로운 인스턴스를 생성합니다). 서비스가 임의 발사 일 때 허용되지 않습니다.

자바 스크립트 페이지를 다시로드하지 않고도 기능을 실행할 수 있습니까?

답변

0

나는 당신이 원하는 것이 fireCircle 함수가 실행 된 후에지도를 다시 렌더링하는 것이라고 생각한다. this tpic을 참조하십시오. 짧은 대답 :

function fireCircle(lat, lng, rad, textTitle){ 
     var circleColor = 'red'; 
     var circle = L.circle([lat, lng], rad, { 
       color: circleColor, 
       fillColor: circleColor, 
       fillOpacity: 0.5 
      }) 
     .bindPopup(String(textTitle)) 
     .addTo(map); 
     **map.invalidateSize();** 
    } 

희망이 있습니다!

관련 문제