2013-01-19 117 views
0

我想在地圖上動態地添加標記和使用markerCluster 像下面的鏈接集羣他們:​​ 的場景,當用戶進入我的網站,他們會看到一個初始谷歌地圖, 當他們按下按鈕時,我會回到我的數據庫獲取100個數據並在地圖上爲用戶繪製 ,因爲100個數據可能很大,特別是它們很接近,所以我想使用markerCluster,但以某種方式它沒有工作,我找不到爲什麼,控制檯中沒有錯誤顯示(我使用Chrome的Web開發工具)動態添加標記羣集在谷歌地圖

這裏是我的JavaScript,我使用java,javascript和jsp:

$('#addMarkerData').click(function(){ 
console.log('into addMarkerData click function'); 
$.get('getphoto.do',{},function(Result){ 
    var markers = []; 
    var image = 'img/location.png'; 
    for(var i=0; i < 100; i++){ 
      console.log(Result[i].photoId); 
      console.log(Result[i].latitude); 
      console.log(Result[i].longitude); 
      console.log(Result[i].imgURL); 
       var latLng = new google.maps.LatLng(Result[i].latitude, 
         Result[i].longitude); 
       var marker = new google.maps.Marker({ 
        animation: google.maps.Animation.DROP, 
        position: latLng, 
        icon: image 
       }); 
       markers.push(marker); 
    } 
    var markerCluster = new MarkerClusterer(map, markers); 
    console.log(markerCluster.getTotalMarkers()); 
}); 

});

變量地圖聲明另一個.js文件,並且將被加載在此之前.js文件

一兩件事,在我的代碼的最後一行,console.log(markerCluster.getTotalMarkers())顯示正確答案(100),BTW

這將是非常感激,如果任何人都可以給我一些建議 感謝

+0

當您將'console.log(map)'放入get-callback時,您會看到什麼? –

+0

我看到這個: http://d.pr/i/lzZX – Arvin

回答

2

你應該在函數外創建MarkerClusterer這樣就可以反覆使用它。你可以創建地圖後,立即創建它:

var map = new google.maps.Map(); 
var markerCluster = new MarkerClusterer(map); 

然後,您可以使用您的JSON回調裏面addMarker()addMarkers()方法。每次使用相同的標記分組器,因此任何以前添加的標記都不會被刪除。代碼粗略輪廓:

$('#addMarkerData').click(function() { 
    $.get('getphoto.do', {}, function (Result) { 
     var markers = []; 
     for (var i = 0; i < Result.length; i++) { 
      var marker = new google.maps.Marker({ 
       animation: google.maps.Animation.DROP, 
       position: new google.maps.LatLng(Result[i].latitude, Result[i].longitude), 
       icon: 'img/location.png' 
      }); 
      markers.push(marker); 
     } 
     markerCluster.addMarkers(markers); 
     console.log(markerCluster.getTotalMarkers()); 
    }); 
}); 
+0

感謝您的建議,但它仍然不起作用,這是我的控制檯登錄我的$ .get()的回調函數: http ://d.pr/i/lzZX – Arvin

+0

謝謝大家,我發現了這個問題......其實我已經完成了markcluster的工作......我之所以沒有在地圖上看到任何標記是因爲我把lat在經度上並在緯度上放置...所以當我檢查我的標記的位置時,它總是顯示緯度90 ... 我認爲這是我在地圖上看不到標記的原因之一,再次感謝您。 – Arvin