2013-07-27 16 views
0

我有一個網站使用谷歌地圖工具庫的組合; markerWithLabel和markerClusterPlus。DocumentFragment和谷歌地圖

markerWithLabel操縱DOM將標籤放在地圖上。我的問題是,這是非常昂貴的時間和CPU明智的。

我想知道是否有緩存寫入DOM的方法,並一次沖洗它們,以減少重繪並希望提高性能。

我在下面添加了下面的代碼來展示我目前的工作情況。新標記是似乎爲添加到地圖上的每個項目重新繪製的部分。可能是最糟糕的做法,一次一個。

$.rMap.ready(function() { 
    per.mapRM = JSONH.unpack(per.mapRM); 
    var markers = []; 
    for (var i = 0, mlen = per.mapRM.length; i < mlen; ++i) { 
     bubble_color = colorArray[parseInt(per.mapRM[i].b, 10)]; 
     var marker = new MarkerWithLabel({ 
      position: new google.maps.LatLng(parseFloat(per.mapRM[i].lt),parseFloat(per.mapRM[i].ln)), 
      map: $.rMap.map, 
      draggable: false, 
      raiseOnDrag: false, 
      icon: {}, 
      labelContent: '<div id="rental-marker-'+ per.mapRM[i].id+'" class="marker-for-rent">'+ 
      '<span class="point_border"></span><span class="point point_'+ bubble_color + 
      '"></span><span class="bubble bubble_'+ bubble_color + 
      '">$'+ per.mapRM[i].r+'</span>' 
     }); 
     markers.push(marker); 
    } 

    var markerClusterer = new MarkerClusterer($.rMap.map, markers, { 
     averageCenter: true, 
     ignoreHidden: true, 
     printable: true, 
     maxZoom: 14 
    });   
}); 

我正在考慮使用documentFragments爲例,或者我在這裏吠叫錯誤的樹?

感謝

+0

你或許應該向我們展示你是如何產生這些標記,如果我們應該幫助你使它更有效率? – adeneo

+0

我想到的第一件事是繪製更少的標籤,使用縮放值來決定標籤是否必須寫入。 – Mangiucugna

+0

MarkerClusterer的用途是在一個位置表示許多標籤。不幸的是,它需要將標記添加到地圖中才能計算羣集的成員。 – Greg

回答

2

你有沒有嘗試刪除 「地圖:$ .rMap.map」 參數創建MarkerWithLabel對象時?

我覺得markerClusterer應該來處理,它看起來像你問的地圖渲染所有的人(markerClusterer做他的事情簡化作業之前)

+0

哦,多福斯!當然!感謝user2622729 – Greg