[英]Android - Send latitude and longitude to java script from java
我试图在 webview 中显示街景。 以下代码工作正常。
街景.html
<!DOCTYPE html>
<html>
<head>
<title>Street View Containers</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
<style type="text/css">
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
#street-view {
height: 100%;
}
</style>
<script>
let panorama;
function initialize() {
panorama = new google.maps.StreetViewPanorama(
document.getElementById("street-view"),
{
position: { lat: 37.86926, lng: -122.254811 },
pov: { heading: 165, pitch: 0 },
zoom: 1,
}
);
}
</script>
</head>
<body>
<div id="street-view"></div>
<!-- Async script executes immediately and must be after any DOM elements used in callback. -->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDSye_pMEK2FplBOupiuAn-grNXQidf6vM&callback=initialize&libraries=&v=weekly"
async
></script>
</body>
</html>
CustomWebView.java
webView = new WebView(ctContext);
webView.getSettings().setJavaScriptEnabled(true);
webView
.addJavascriptInterface(new JavaScriptInterface(this),
"Android");
if (postData == null) {
webView.loadUrl("file:/" + "/" + "/android_asset/streetview.html");
}
现在我正在尝试将经纬度从 CustomWebView 发送到 java 脚本。 谁可以帮我这个事?
我试过如下:
String message = "37.86926,-122.254811";
String function = "initialize('" + message + "')";
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished (WebView view, String url) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
view.evaluateJavascript(function,null);
}
}
});
但不工作。 请帮助我。
使用JavascriptInterface
我将数据发送到 java 脚本。
这是我如何使用它的代码..
CustomWebView.java
webView = new WebView(ctContext);
webView.getSettings().setJavaScriptEnabled(true);
webView
.addJavascriptInterface(new JavaScriptInterface(37.86926,-122.254811),
"JavaScriptInterface"); // Using of this "JavaScriptInterface" we are going to get the value in javascript.
if (postData == null) {
webView.loadUrl("file:/" + "/" + "/android_asset/streetview.html");
}
JavaScriptInterface.java
public class JavaScriptInterface {
private double latitude;
private double longitude;
//#endif
public JavaScriptInterface(double latitude, double longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
@JavascriptInterface
public double getLatitude() {
return latitude;
}
@JavascriptInterface
public double getLongitude() {
return longitude;
}
}
街景.html
function initialize() {
val lati = JavaScriptInterface.getLatitude()
val longi = JavaScriptInterface.getLongitude()
panorama = new google.maps.StreetViewPanorama(
document.getElementById("street-view"),
{
position: { lat: lati, lng: longi },
pov: { heading: 165, pitch: 0 },
zoom: 1,
}
);
}
使用 JavaScriptInterface.getLatitude() 和 JavaScriptInterface.getLongitude() 我可以得到从 java 到 javascript 的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.