一旦我将标识添加到标记,地图就不会聚集位置

时间:2014-03-26 22:54:34

标签: javascript jquery google-maps google-maps-api-3 jquery-plugins

大约一个星期,我正在与谷歌地图战斗,将它添加到我的peoject。 我需要使用这个谷歌地图: http://jquery-ui-map.googlecode.com/svn/trunk/demos/jquery-google-maps-clustering.html

就我使用该链接中的代码而言,一切都很好,但只要我为每个标记添加id,我创建的集群就不再起作用了。这是我的代码:

$('#map_canvas').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', function(evt, map) { 
                    $('#map_canvas').gmap('clear', 'markers');

                    var bounds = map.getBounds();
                    var southWest = bounds.getSouthWest();
                    var northEast = bounds.getNorthEast();
                    var lngSpan = northEast.lng() - southWest.lng();
                    var latSpan = northEast.lat() - southWest.lat();
                    for ( var i = 0; i <2; i++ ) {
                        $(this).gmap('addMarker', {'id':'m_'+i, 'position': new google.maps.LatLng(southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random()) } ).click(function() {
                            $('#map_canvas').gmap('openInfoWindow', { content : 'ddd d!' }, this);
                        });
                    }
                    $(this).gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers')));
                });

正如您所看到的,我刚刚为我正在使用的每个标记添加了一些id。仅供参考,我需要添加ID,因为稍后我想删除标记,例如点击按钮并在点击后添加新标记。

任何人都可以帮助我如何以一种不会破坏群集属性的方式向标记添加id?

1 个答案:

答案 0 :(得分:1)

标记的id由jquery-ui-map在内部使用,以识别marker- 数组中的标记。请注意,markers最初是一个数组。可以使用自定义id,但id应为数字(数组键可能只是数字)。

在你的情况下,它是一个字符串,将数组转换为一个对象。链接演示中使用的MarkerClusterer版本是2.0.6,它要求标记是一个数组,而不是一个对象,因为它使用length-property(对象不存在)进行迭代

解决方案:使用较新的版本,例如2.1.1,或该属性的其他名称(例如ID