如何重用/重新初始化gmap3(第5版)创建的谷歌地图?

时间:2014-01-21 04:19:00

标签: google-maps google-maps-api-3 cordova ios7 jquery-gmap3

我想重复使用gmap3创建的谷歌地图,我用一组标记初始化了一次。这目前有效,但我稍后会解释

目前我运行的类似于:

$('#mapWrapper').gmap3({
    clear: {
        name:['marker', 'infoWindow']
    },
    map:{
        options: mapOptions
    },
    marker:{
        values: markers
    }
});

当我想用新标记更新地图时,我会运行相同的代码。

由于新ios7的内存限制,我在运行带有cordova的ios7上的混合应用程序时遇到问题。所以我正在寻找消除内存泄漏的方法。

1 个答案:

答案 0 :(得分:1)

如果已经全部初始化,那么

gmap3 v5 会重新使用。您可以自己在代码中看到$.fn.gmap3

gmap3 = $this.data("gmap3");
..
if (!gmap3){
        gmap3 = new Gmap3($this);
..

您不必反复重新初始化地图 - 只需重置/添加新标记即可。假设您已经在上面的代码中初始化了gmap3,并且有两个按钮 - #addMarker#clearMarkers

<button id="clearMarkers">clear</button>
<button id="addMarker">add</button>

然后你可以像这样添加/删除标记:

//add a marker, this could be an array of markers / latlngs
$("#addMarker").click(function() {
    $('#mapWrapper').gmap3({
        marker:{
            latLng : new google.maps.LatLng(46.578498, 2.457275)
        }
    });
});

//clear all markers on the map
$("#clearMarkers").click(function() {
    $('#mapWrapper').gmap3({
        clear: {
            name:["marker"],
        }
    });
});

所以你看,gmap3已经重用了自己。

但是,如果你有内存问题 - 为什么还要使用“昂贵”的库作为gmap3呢?使用原生谷歌地图并使用地图实例更新地图会不会更好?这肯定会大大减少内存使用量。

但我并不完全相信它实际上 内存存在问题。当人们在智能手机上面临谷歌地图的问题时,很可能是由于地图图块的谷歌地图缓存,很快就会填满内部缓存。

您可以完全避免谷歌地图图块缓存 - 请参阅此链接 - &gt; How to prevent Google Maps API v3 from caching tiles - 尽管问题/答案很少受到关注,但效果很好。