我有一个用 Cordova (Phonegap) 2.3.0 编写的应用程序。我使用 Jquery 1.8.2 和 jquerymobile 1.2.0 和谷歌地图 v3。XCode 4.6 版
在一个页面上,我加载了一堆坐标并创建了不同的折线添加到地图中。地图中添加了 37 条折线,每条折线包含 20 到 200 个坐标。地图上总共有大约 1700 个坐标。我也有20个标记。
该应用程序从一开始就运行良好,我可以放大和缩小并且地图响应良好,但是如果我重新加载地图,我有时会开始在 XCode 中收到诸如“收到内存警告”之类的消息,并且地图不会再更新,有时应用程序克拉施。
这是我在添加更新数据之前调用的清晰例程:function clearOverlays() {
try {
if (polyLinesArray != null) {
for (var i = 0; i < polyLinesArray.length; i++) {
polyLinesArray[i].setMap(null);
polyLinesArray[i] = null;
}
polyLinesArray.length = 0;
}
}
catch(e) {
handleError(e, "clearOverlays");
}
}
polyLinesArray 是一个数组,在将所有折线添加到地图后,我会将它们推送到其中。
所以问题是,我怎样才能以一种好的方式清除地图以防止内存警告(和泄漏?)?
我在折线上也有鼠标点击监听器,我需要在更新之前清除它们吗?
当我导航到应用程序中的另一个 html 页面时,也会发生同样的情况。前后几次后,地图将不再更新。在我导航到其他页面之前,我首先调用我的清晰例程。
完成了另一个简单的测试:我只是加载地图,添加我的折线和其他一些标记。放大和缩小几次,然后出现“收到内存警告”。我没有做任何其他事情,只是让谷歌地图处理缩放和平移。
问候亨里克