javascript - 谷歌地图集群不工作

标签 javascript google-maps google-maps-api-3 markerclusterer

<script>
    var lat = "";
    var map = "";
    var markers = [];
    function initMap() {
        if ($("#map").length) {
            var mapOptions = {
                zoom: 13, 
                center: new google.maps.LatLng(37.498214, 127.027535), 
                scrollwheel: true, 
                mapTypeControl: false 
            };
            var geocoder = new google.maps.Geocoder();
            map = new google.maps.Map(document.getElementById('map'), mapOptions); 
            var image = 'img/marker.png'; 
            for (i = 0; i < 1; i++) { // this database size
                var address = 'addressvalue';
                geocoder.geocode({'address': address}, function (results, status) {
                    if (status === google.maps.GeocoderStatus.OK) {
                        lat = results[0].geometry.location;
                        lat = lat.toString().split(" ");
                        lat[0] = lat[0].replace('(', '');
                        lat[0] = lat[0].replace(',', '');
                        lat[1] = lat[1].replace(')', '');
                        map.setCenter(new google.maps.LatLng(lat[0], lat[1]));
                        var marker = new google.maps.Marker({
                            map: map,
                            position: results[0].geometry.location,
                            icon: image,
                            title: 'test'
                        });
                        markers.push(marker);
                        var infowindow = new google.maps.InfoWindow({
                            content: '<div>1234</div>'
                        });
                        google.maps.event.addListener(marker, 'click', function () {
                            infowindow.open(map, marker);
                        });
                    } else {
                        alert('Geocode was not successful for the following reason: ' + status);
                    }
                });
            }
            markerClusterer = new MarkerClusterer(map, markers, {
                maxZoom: 10,
                gridSize: 10
            });
            google.maps.event.addDomListener(window, "resize", function () {
                var center = map.getCenter();
                google.maps.event.trigger(map, "resize");
                map.setCenter(center);
            });
        }
    }
</script>
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/1.0/src/data.json"></script>
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/1.0/src/markerclusterer.js"></script>

我遵循了谷歌地图 API,但遇到了问题。

我想要标记和簇。这是问题。

单击标记时,显示窗口标题。这不是问题。

我哪里做错了?

最佳答案

问题是您正在执行异步的 geocoder.geocode() 函数调用来获取数据来创建标记。但是,您创建 MarkerClusterer 的行不在该地理编码函数的回调内。因此,它将在创建标记之前发生,并且此时仅使用一个空数组。

我不完全确定您的 for 循环的意义。但假设您需要它,技巧可能是在地理编码之前创建一个空的 MarkerClusterer。然后在回调中,创建每个标记后立即将其添加到 MarkerClusterer 中。

类似这样的事情:

var markerClusterer = new MarkerClusterer(map, [], {
    maxZoom: 10,
    gridSize: 10
});

for (i = 0; i < 1; i++) { // this database size
    var address = 'addressvalue';
    geocoder.geocode({'address': address}, function (results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location,
                icon: image,
                title: 'test'
            });
            markers.push(marker);

            markerClusterer.addMarker(marker);
        } else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
    });
}

关于javascript - 谷歌地图集群不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35450870/

相关文章:

php - 如何通过特定国家/地区的邮政编码在谷歌地图上查找地点

javascript - 强制 Jquery 图标位于按钮中心

javascript - 绘制一系列球不起作用

javascript - google map api v3 - 如何限制多边形线的数量并在点击 5 次时强制关闭?

javascript - 谷歌地图 : Distinguishing Enter Click Source

java - Vaadin 添加带有纬度和经度的图像 map

javascript - AngularJS ng-重复显示html

javascript - 如何获取多个文本框值?

android - 如何使用 Jetpack Composite 刷新 map 上的集群标记?

javascript - 谷歌地图 react : Value of props passed by parent component