在android studio中,我通过webview调用传单地图如下:
@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;
}
现在,我有一个后台服务正在运行偶尔会发生火灾,我想在发生这种情况时在地图上显示一个圆圈。要从java运行javascript函数,将使用以下内容
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:fireCircle(" +
43.0000000 + "," +
-79.4000000 + "," +
300 + ",\"" +
"A CIRCLE!" + "\")");
}
});
其中传单javascript函数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);
}
到目前为止,我发现允许圆圈出现在地图上的唯一方法是完全重新加载webview页面(onCreateView每次都创建一个新实例)。当服务随机触发时,这是不可接受的。
是否可以在不重新加载javascript页面的情况下触发该功能?
答案 0 :(得分:0)
我认为你想要的是在fireCircle函数运行后重新渲染地图。 请参阅this tpic。 简短的回答:
php /var/www/ci_folder/index.php controller_name function_name
希望它有效!