iphone phonegap 谷歌地图内存警告

Posted

技术标签:

【中文标题】iphone phonegap 谷歌地图内存警告【英文标题】:iphone phonegap google maps memory warning 【发布时间】:2013-02-18 08:18:43 【问题描述】:

我有一个用 Cordova (Phonegap) 2.3.0 编写的应用程序。 我使用 Jquery 1.8.2 和 jquerymobile 1.2.0 和谷歌地图 v3。 XCode 4.6 版

在一个页面上,我加载了一堆坐标并创建了不同的折线添加到地图中。 地图中添加了 37 条折线,每条折线包含 20 到 200 个坐标。地图上总共有大约 1700 个坐标。 我也有大约 20 个标记。

该应用程序从一开始就运行良好,我可以放大和缩小地图并且地图响应良好,但是如果我重新加载地图,我有时会开始在 XCode 中收到诸如“收到内存警告”之类的消息,并且地图不会再更新并且有时应用程序崩溃。

这是我在添加更新数据之前调用的明确例程: 函数 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 页面时,也会发生同样的情况。前后几次后,地图将不再更新。在我导航到其他页面之前,我先调用我的清晰例程。

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

问候 亨里克

【问题讨论】:

我也有类似的问题,你找到解决办法了吗? 【参考方案1】:

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

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

【讨论】:

以上是关于iphone phonegap 谷歌地图内存警告的主要内容,如果未能解决你的问题,请参考以下文章

iphone上禁用wifi时,Phonegap Sencha应用谷歌地图API未加载

科尔多瓦谷歌地图插件安装Phonegap

PhoneGap Cordova 插件谷歌地图 - 插件未定义

谷歌地图用phonegap放大

使用 iPhone 位置更新谷歌地图

在iphone中使用谷歌地图计算两个位置之间的距离