【问题标题】:Dynamic add marker cluster on google map在谷歌地图上动态添加标记集群
【发布时间】:2013-01-03 02:40:42
【问题描述】:

我想在地图上动态添加标记并使用 markerCluster 对它们进行聚类 喜欢下面的链接:http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/examples.html 场景是,当用户进入我的网站时,他们会看到一个初始的谷歌地图, 当他们按下按钮时,我将返回我的数据库以获取 100 个数据并在地图上为用户绘制 因为 100 个数据可能很大,尤其是它们很接近,所以我想使用 markerCluster,但不知何故它不起作用,我不知道为什么,控制台中没有错误显示(我使用 chrome 的 web developer工具)

这是我的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),顺便说一句

如果有人能给我一些建议,将不胜感激 谢谢

【问题讨论】:

  • 当您将console.log(map) 放入get-callback 时,您会看到什么?
  • 我看到了这个:d.pr/i/lzZX

标签: java javascript jsp google-maps-api-3 google-maps-markers


【解决方案1】:

您应该在函数外部创建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());
    });
});

【讨论】:

  • 感谢您的建议,但它仍然不起作用,这是我在 $.get() 回调函数中的控制台日志:d.pr/i/lzZX
  • 谢谢你们,我发现了问题...实际上我已经完成了markcluster工作...我在地图上没有看到任何标记的原因是因为我把纬度放在经度和将 lon 放在纬度中...所以当我检查标记的位置时,它总是在 90 处显示纬度...我认为这是我在地图上看不到标记的原因之一,再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 2013-01-13
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多