我想重复使用gmap3创建的谷歌地图,我用一组标记初始化了一次。这目前有效,但我稍后会解释
目前我运行的类似于:
$('#mapWrapper').gmap3({
clear: {
name:['marker', 'infoWindow']
},
map:{
options: mapOptions
},
marker:{
values: markers
}
});
当我想用新标记更新地图时,我会运行相同的代码。
由于新ios7的内存限制,我在运行带有cordova的ios7上的混合应用程序时遇到问题。所以我正在寻找消除内存泄漏的方法。
答案 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 - 尽管问题/答案很少受到关注,但效果很好。