【发布时间】:2019-02-25 17:35:09
【问题描述】:
我有 Ionic 3 应用程序,我已将其更新为 IONIC 4 。因此,当我为 ios 12 使用 xcode 10 编译应用程序时,谷歌地图折线不会呈现和抛出错误。它在 IONIC 3 和 ios 11.3 上渲染得非常好,但在更新后它已经停止显示: 我的代码是:
for (const path of dashedlinePaths) {
const lineSymbol = {
path: 'M 0,-1 0,1',
strokeOpacity: 1,
scale: 4
};
let dashedPath = new google.maps.Polyline({
path: path,
geodesic: true,
strokeOpacity: 0,
strokeColor: '#ff883c',
icons: [{
icon: lineSymbol,
offset: '0',
repeat: '20px'
}]
});
dashedPath.setMap(this.googleMap);
}
for (const path of linePaths) {
let linePath = new google.maps.Polyline({
path: path,
geodesic: true,
strokeColor: '#ff883c',
strokeOpacity: 1.0,
strokeWeight: 4
});
linePath.setMap(this.googleMap);
}
错误显示如下:
TypeError: null is not an object (evaluating 'e.lineJoin="round"')
runTask — polyfills.js:3880
invokeTask — polyfills.js:4017
n — polyfills.js:3457
runTask — polyfills.js:3880
还显示警告,例如:
Total canvas memory use exceeds the maximum limit (224 MB).lW — poly.js:52:321
当我尝试缩放地图时也会出现错误:
TypeError: null is not an object (evaluating 'a.scale')
runTask — polyfills.js:3880
invokeTask — polyfills.js:4017
n — polyfills.js:3457
runTask — polyfills.js:3880
【问题讨论】:
-
为什么不赞成,提供理由,这根本不被接受
-
我在 Google Maps javascript 上看到了同样的问题。在我放大和缩小一段时间后,我得到了 TypeError 和 Total Canvas Memory 错误。
-
仍在调查中。我想继续说,基于 Web 的系统以及编译 IOS 中本机使用的代码存在问题。我看到这个的另一个见解是我只在 IOS 的 Safari 中看到这个。在桌面 Chrome 中,我可以毫无问题地永远平移和缩放。在 IOS Safari 中,使用 Google 地图进行了大约 6 到 10 次平移和缩放操作后,我在控制台中看到了错误。桌面 Safari 没有问题。桌面 Firefox 似乎也没有受到影响。所以我专注于 IOS Safari。
-
花了一个周末制作一个简单的网页来显示问题。向苹果和谷歌提交报告。该页面允许您在观看 Apple 调试器中的“画布”选项卡时无需图标即可平移和缩放。然后,您可以点击一个按钮来显示图标、平移和缩放,没有问题。然后点击一个按钮来添加一条折线,然后您将看到 41 个孤立的画布。重新加载,按下不同的按钮并放下一个多边形。更多孤立的画布。无法分享,测试页面有太多链接到我的服务器。但现在这两个小组都很容易看到中断及其背后的 javascript。
-
最新版本的 MacBook Pro 上的桌面 Safari 更新:它确实存在问题,并且画布/内存大小不断增加。在您收到“此应用程序正在使用大量内存”警告之前,它必须达到 >1.2G 的大小。可能大多数用户永远不会看到它,因为大多数网站一两天都不会运行/显示。因此,用户永远不会意识到这个错误。我的老,无法更新 2009 MacPro safari 没有这个问题。
标签: javascript typescript google-maps-api-3 ionic3