Phonegap iOS 应用中的 Google Maps API3 缺少控件

Controlls missing on Google Maps API3 in Phonegap iOS App

我正在开发一个使用 jQuery 移动设备和 Phonegap 构建的应用程序。一年多来它一直运行良好。然后一两个月前,控件(特别是地图类型、缩放和街景)在没有更新应用程序的情况下丢失,并且仅在 iOS.

上丢失

我已经通过 phone 的浏览器尝试 运行 该应用程序,它工作正常。是经过phonegap(build)编译后才发现这个问题。我试图手动强制 UI 设置为真,但只有地图类型控件出现。我也试过修改 CSS 来给控件一个疯狂的高 z-index,这也没有什么区别。

我一直无法在网上找到任何相关信息。如何让控件再次显示?

我一直在联系 Google,结果是 3.32 版中引入了一个错误,导致了这个问题。据我所知,他们正在努力解决这个问题,但同时想出了一个解决方法。

首先,您需要在script标签中指定版本3.31:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&v=3.31"></script>

然后在创建 mapOptions 时,手动将您想要的控件设置为 true。就我而言:

var mapOptions = {
    center: latlng,
    zoom: 16,
    mapTypeControl: true,
    streetViewControl: true,
    zoomControl: true
};

就我而言,我缺少街景图标。 Google 地图 iframe 没有触发 onload 事件,因为 Cordova 拒绝了 iframe 的空 url。

ERROR Internal navigation rejected - <allow-navigation> not set for url='about:blank'

我在config.xml

中设置了<allow-navigation href="*" />

对于那些不使用 Phonegap 但使用本机 WKWebView 的人,您默认情况下禁用了除 "file" 之外的任何方案...您还必须在 [=15] 的 webView() func 中启用 "about" 方案=]

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    var url = navigationAction.request.url;
    let scheme = url!.scheme;

    // open local scheme in WebView
    if (scheme == "file") {
        decisionHandler(.allow);
    }

    // needed to show google maps icons for controls like zoomControl and streetViewControl
    else if (scheme == "about") {
        decisionHandler(.allow);
    }

    // other schemes like fb/http/https/mailto open in external application
    else {
        UIApplication.shared.openURL(url!);
        decisionHandler(.cancel);
    }
}