1

我有一个用 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 页面时,也会发生同样的情况。前后几次后,地图将不再更新。在我导航到其他页面之前,我首先调用我的清晰例程。

完成了另一个简单的测试:我只是加载地图,添加我的折线和其他一些标记。放大和缩小几次,然后出现“收到内存警告”。我没有做任何其他事情,只是让谷歌地图处理缩放和平移。

问候亨里克

4

1 回答 1

0

我遇到了同样的问题,发现它与 Google Maps API 绘制叠加层的方式有关。由于某种原因,这从 API 3.7 及更高版本开始变得过于占用内存。幸运的是,在 3.12(当前的实验版本)中,这似乎再次得到解决。至少在我的情况下。

如果您在 URL 中使用 &v=3.exp 调用 maps api,您的问题也可能会得到解决。

于 2013-05-02T09:42:04.123 回答