WKWebView不在网页的模式窗口中显示Google Map

时间:2019-10-28 13:54:59

标签: javascript ios swift google-maps

我有一个网页,我想使用WKWebView在iOS应用程序中显示它。 我的ViewController.swift的代码:


import UIKit
import WebKit
import os.log

class ViewController: UIViewController, WKNavigationDelegate {

    var webView: WKWebView!

    override func loadView(){
        webView = WKWebView()
        webView.navigationDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://example.com")!
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    }

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if navigationAction.navigationType == WKNavigationType.linkActivated{
            os_log("Link was clicked: %@", log: OSLog.default, type: .debug, navigationAction.request.url?.absoluteString ?? "")
            webView.load(navigationAction.request)
        }
        decisionHandler(.allow)
    }

 }

页面上的所有JavaScript都可以正常工作,但Google map除外,后者放置在模式div中并显示在按钮上。因此,当我按下按钮显示Google地图时,我只会看到空白区域。看来Google Map JS API函数“ initMap()”不起作用:

</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>

该地图可在浏览器和Android的WebView中使用。我还在Info.plist中添加了“隐私-使用中的位置使用情况说明”,并尝试使用

webView.configuration.preferences.javaScriptEnabled = true

结果是一样的 Screenshot

0 个答案:

没有答案