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);
}
}
我正在开发一个使用 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);
}
}