繁体   English   中英

Android - 从 java 脚本发送纬度和经度到 java 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM