Google maps api 3 使用google maps版本3对标记进行聚类

Google maps api 3 使用google maps版本3对标记进行聚类,google-maps-api-3,markerclusterer,Google Maps Api 3,Markerclusterer,我有大约2400个标记显示在谷歌地图3版上。问题是地图上有太多的标记,这不是一个好的视觉表现。我们要做的是对标记进行分组(即对它们进行聚类)。我在这方面遇到了一些问题。下面是我的示例代码 function initialize() { var markers = JSON.parse('<%=ConvertDataTabletoString() %>'); var mapOptions = { center: new googl

我有大约2400个标记显示在谷歌地图3版上。问题是地图上有太多的标记,这不是一个好的视觉表现。我们要做的是对标记进行分组(即对它们进行聚类)。我在这方面遇到了一些问题。下面是我的示例代码

function initialize() {
        var markers = JSON.parse('<%=ConvertDataTabletoString() %>');
        var mapOptions = {
            center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
            zoom: 2,
            mapTypeId: google.maps.MapTypeId.ROADMAP
            //marker:true
        };

        var infoWindow = new google.maps.InfoWindow();
        var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

        //Get marker image
        var redMarker = 'Images/marker2.png';
        var greenMarker = 'Images/g48.png';
        var currentMarker;

        var gmarkers = [];

        for (i = 0; i < markers.length; i++) {
            var data = markers[i];
            var mag = data.Magnitude;
            if (mag < 5) {
                currentMarker = greenMarker;
            }
            else if (mag >= 5) {
                currentMarker = redMarker;
            };
            var myLatlng = new google.maps.LatLng(data.lat, data.lng);
            var marker = new google.maps.Marker({
                position: myLatlng,
                map: map,
                title: data.title,
                icon: currentMarker
            });
            (function (marker, data) {
                //Attaching a click event to the current marker
                google.maps.event.addListener(marker, "click", function (e) {
                    infoWindow.setContent('Magnitude: ' + data.Magnitude + '<br />'
                                         + 'Location: ' + data.title);
                    infoWindow.open(map, marker);
                });
            })(marker, data);
            gmarkers.push(marker);
        }
    }

    var markerCluster = new MarkerClusterer(map, gmarkers);

    window.onload = function () { initialize();
}
函数初始化(){
var markers=JSON.parse(“”);
变量映射选项={
中心:新建google.maps.LatLng(标记[0].lat,标记[0].lng),
缩放:2,
mapTypeId:google.maps.mapTypeId.ROADMAP
//马克:对
};
var infoWindow=new google.maps.infoWindow();
var map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
//获取标记图像
var redMarker='Images/marker2.png';
var greenMarker='Images/g48.png';
var电流标记;
var gmarkers=[];
对于(i=0;i=5){
currentMarker=redMarker;
};
var mylatng=new google.maps.LatLng(data.lat,data.lng);
var marker=new google.maps.marker({
职位:myLatlng,
地图:地图,
标题:data.title,
图标:currentMarker
});
(功能(标记、数据){
//将单击事件附加到当前标记
google.maps.event.addListener(标记“单击”,函数(e){
infoWindow.setContent('magnize:'+data.magnize+'
+“位置:”+数据.标题); 信息窗口。打开(地图、标记); }); })(标记、数据); G标记器。推(标记器); } } var markerCluster=新的MarkerClusterer(map,gmarkers); window.onload=函数(){initialize(); }
我在发布的代码中发现一个javascript错误

Uncaught ReferenceError: map is not defined
在这一行:

var markerCluster = new MarkerClusterer(map, gmarkers);  
map变量是initialize函数的局部变量。 该行在initialize函数之外,因此map变量对其不可用


将其放在初始化函数中(但在标记被解析之后)。

我遇到一些问题-什么问题?事实上,地图不会显示。当我对行进行注释时:var markerCluster=newmarkerclusterer(map,gmarkers);地图将显示所有标记。我已经检查过所需的库是否包含在内。请提供一个展示该问题的示例,包括所需的HTML/CSS和一些示例数据。我尝试了你所说的。现在只显示一个标记。请你更新上面的代码好吗?请提供一个展示问题的例子,包括所需的任何HTML/CSS和一些示例数据。在你发布的问题中没有HTML、CSS或示例数据。它不会按原样运行,您是如何测试它的?坐标存储在sql server数据库中。我正在从数据库中检索坐标,然后在地图上绘制它们。在我的身体里,我有一个div用来显示地图。好的,我现在开始工作了。缺少一个闭合圆括号的愚蠢错误。