在html5单页应用程序上使用google map时如何管理内存

木海民

标记标记

我不知道在哪里可以找到在单页应用程序上实施google map的最佳实践。目前,我将bellyjs与requirejs结合使用。

首次加载页面时,创建的标记数只有两个。第二次击中同一条路线后,MarkerWithLabel对象的数量是两倍

其他Google Map插件也是如此(请参阅下文)。

重叠标记

我还能做些什么来刷新/处置/销毁JS内存中的那些对象?

更新:这是我启动插件时的代码:

1)我在模块内声明一个全局变量

var $markers      = [],
    gm            = google.maps,
    iconWithColor = new google.maps.MarkerImage('./img/marker.svg', null, null, null, new google.maps.Size(25,25));

2)下面的代码在模块内的另一个功能中

var that = this;
require(["markerclusterer","markerwithlabel"], function () {
    _.each(coordinates.models, function(val, i) {
    var latLng = new gm.LatLng(val.get('in_latitude'), val.get('in_longitude')),
    marker = new MarkerWithLabel({
        position: latLng,
        draggable: false,
        raiseOnDrag: true,
        map: that.map,
        labelContent: val.get('ig_label'),
        labelAnchor: new gm.Point(22, 0),
        labelClass: 'label',
        bgColour: colors,
        animation: gm.Animation.DROP,
        icon: iconWithColor,
        shadow: shadow
    });
    $markers.push(marker);
    gm.event.addListener(marker, 'click', function() {
        var new_marker = this;
        if(prev_marker) {
           if (prev_marker.getAnimation() != null) {                
           prev_marker.setAnimation(null);                              
           new_marker.setAnimation(gm.Animation.BOUNCE);
           prev_marker = new_marker;
           }
        } else {
           new_marker.setAnimation(gm.Animation.BOUNCE);
           prev_marker = new_marker;
        }
        that.map.panTo(latLng);
    }); 
    }, this);
});

3)我尝试通过使用处置

if($markers) {
    for (var i = 0; i < $markers.length; i++ ) {                    
    //console.log($markers[i]);
    $markers[i].setMap(null);
    delete $markers[i];
    }               
    $markers = [];
}   
if (markerCluster) {
    markerCluster.clearMarkers();
    markerCluster = null;
}
木海民
if($markers) {
    for (var i = 0; i < $markers.length; i++ ) {                    
      //console.log($markers[i]);
      google.maps.event.clearInstanceListeners($markers[i]);
      $markers[i].setMap(null);
      delete $markers[i];
    }               
    $markers = [];
}

好的,最后我仅通过销毁监听器来成功减少了数量。希望有帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在单页Web应用程序上使用python-social-auth通过google oauth2注册用户?

来自分类Dev

如何在 dart 中更改基本单页 Web 应用程序上的内容?

来自分类Dev

如何使用Apache代理Weblogic群集上的单页应用程序

来自分类Dev

如何使用JavaScript刷新单页应用程序?

来自分类Dev

如何预渲染使用 React 的单页应用程序?

来自分类Dev

Google Map在Android应用程序上崩溃

来自分类Dev

关于单页或多页应用程序的内存问题

来自分类Dev

如何在Android应用程序上使用Google帐户注册用户

来自分类Dev

如何在单页应用程序中使用IndexedDb管理连接

来自分类Dev

如何使用服务于单页应用程序的 ExpressJS 管理丢失的静态文件?

来自分类Dev

如何在Rails应用程序上的HTML模板中使用“ SASS”?

来自分类Dev

如何在Rails应用程序上的HTML模板中使用“ SASS”?

来自分类Dev

如何在单页(Web)应用程序上进行“最终客户端”性能测试?

来自分类Dev

html5 canvas应用程序中的JavaScript base64图像源内存管理

来自分类Dev

使用Python在Mac上的应用程序上打开时,如何给其他参数?

来自分类Dev

使用Python在Mac上的应用程序上打开时,如何给其他参数?

来自分类Dev

如何在智能电视上测试HTML5和Javascript应用程序?

来自分类Dev

如何在单页应用程序中的Google Analytics(分析)中触发页面查看事件?

来自分类Dev

如何让 Google Analytics 在单页应用程序中显示页面的正确标题?

来自分类Dev

如何禁用通过IIS提供的单页应用程序HTML文件的缓存?

来自分类Dev

使用向量时的内存管理

来自分类Dev

仅当与互联网断开连接时才使用HTML5应用程序缓存

来自分类Dev

.NET应用程序上的终端服务服务器内存管理

来自分类Dev

如何使用AngularJS单页应用程序处理页面刷新

来自分类Dev

如何使用Dojo 1.10创建单页Web应用程序?

来自分类Dev

如何使用jQuery更新单页应用程序中的DOM?

来自分类Dev

如何使用react-router创建单页应用程序

来自分类Dev

我如何使用symfony的数据初始化我的单页主干应用程序

来自分类Dev

如何使用MERN堆栈构建动态单页Web应用程序?

Related 相关文章

  1. 1

    如何在单页Web应用程序上使用python-social-auth通过google oauth2注册用户?

  2. 2

    如何在 dart 中更改基本单页 Web 应用程序上的内容?

  3. 3

    如何使用Apache代理Weblogic群集上的单页应用程序

  4. 4

    如何使用JavaScript刷新单页应用程序?

  5. 5

    如何预渲染使用 React 的单页应用程序?

  6. 6

    Google Map在Android应用程序上崩溃

  7. 7

    关于单页或多页应用程序的内存问题

  8. 8

    如何在Android应用程序上使用Google帐户注册用户

  9. 9

    如何在单页应用程序中使用IndexedDb管理连接

  10. 10

    如何使用服务于单页应用程序的 ExpressJS 管理丢失的静态文件?

  11. 11

    如何在Rails应用程序上的HTML模板中使用“ SASS”?

  12. 12

    如何在Rails应用程序上的HTML模板中使用“ SASS”?

  13. 13

    如何在单页(Web)应用程序上进行“最终客户端”性能测试?

  14. 14

    html5 canvas应用程序中的JavaScript base64图像源内存管理

  15. 15

    使用Python在Mac上的应用程序上打开时,如何给其他参数?

  16. 16

    使用Python在Mac上的应用程序上打开时,如何给其他参数?

  17. 17

    如何在智能电视上测试HTML5和Javascript应用程序?

  18. 18

    如何在单页应用程序中的Google Analytics(分析)中触发页面查看事件?

  19. 19

    如何让 Google Analytics 在单页应用程序中显示页面的正确标题?

  20. 20

    如何禁用通过IIS提供的单页应用程序HTML文件的缓存?

  21. 21

    使用向量时的内存管理

  22. 22

    仅当与互联网断开连接时才使用HTML5应用程序缓存

  23. 23

    .NET应用程序上的终端服务服务器内存管理

  24. 24

    如何使用AngularJS单页应用程序处理页面刷新

  25. 25

    如何使用Dojo 1.10创建单页Web应用程序?

  26. 26

    如何使用jQuery更新单页应用程序中的DOM?

  27. 27

    如何使用react-router创建单页应用程序

  28. 28

    我如何使用symfony的数据初始化我的单页主干应用程序

  29. 29

    如何使用MERN堆栈构建动态单页Web应用程序?

热门标签

归档