我花了大约一周的时间才用谷歌地图将其添加到我的项目中。 我需要使用这个谷歌地图: 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 添加到标记吗?
最佳答案
标记的 id
由 jquery-ui-map 在内部使用来识别标记 -array 中的标记。请注意,markers
最初是一个数组。可以使用自定义 id
,但 id 应该是数字(array-keys 只能是数字)。
在您的情况下,它是一个字符串,它将数组转换为对象。链接演示中使用的 MarkerClusterer 版本是 2.0.6,它要求标记是一个数组,而不是一个对象,因为它通过使用长度属性(对象不存在)进行迭代
解决方案:使用较新的版本,例如2.1.1 或属性的其他名称(例如 ID
)
关于javascript - 将 id 添加到标记后, map 不会对位置进行聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674743/