我一直在关注Google Maps API V3中的示例,以便将我放置在地图上的标记进行聚类。我正在使用最简单的方法。我似乎无法让MarkerCluster出现。我可能会将相应的代码放在错误的区域,但在尝试了几个变化之后,我似乎无法显示MarkerCluster。
如果有人有任何见解并且可以告诉我我做错了什么,那将非常感激。
这是代码:
var stories = {{storyJson|safe}};
var geocoder;
var map;
function loadMarkers(stories){
var markers = [];
for (i=0;i<stories.length;i++) {
var story = stories[i];
if (story.copy.length > 120) {
story.copy = story.copy.substring(0, 120) + "...";
}
(function(story) {
var pinColor = "69f2ff";
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=S|" + pinColor,
new google.maps.Size(21, 34),
new google.maps.Point(0,0),
new google.maps.Point(10, 34));
var point = new google.maps.LatLng(story.latitude, story.longitude);
var marker = new google.maps.Marker({position: point, map: map, icon: pinImage});
var infowindow = new google.maps.InfoWindow({
content: '<div >'+
'<div >'+
'</div>'+
'<h2 class="firstHeading">'+story.headline+'</h2>'+
'<div>'+
'<span>'+story.author+'</span><br />'+
'<span>'+story.city+'</span><br />'+
'<span>'+story.topic+'</span><br />'+
'<p>'+story.date+'</p>'+
'<p>'+story.copy+'</p>'+
'<p><a href='+story.url+'>Click to read story</a></p>'+
'</div>'+
'</div>'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,this);
});
markers.push(marker);
})(story);
}
}
function mainMap(position)
{
geocoder = new google.maps.Geocoder();
// Define the coordinates as a Google Maps LatLng Object
var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
// Prepare the map options
var mapOptions =
{
zoom: 15,
center: coords,
mapTypeControl: false,
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Create the map, and place it in the map_canvas div
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
// Place the initial marker
var marker = new google.maps.Marker({
position: coords,
map: map,
title: "Your current location!"
});
loadMarkers(stories);
var markerCluster = new MarkerClusterer(map, markers);
}
答案 0 :(得分:0)
markers
看起来很奇怪,应该只有一个全局markers
填充在loadMarkers中并用于创建群集器。
但是,var markers = []
内部有一行function (story)
,每次循环迭代都会清空。此外,markers.push(marker)
应与创建标记的块位于同一块中;现在它在for循环之外,所以只添加了一个标记(最后一个)。
最后,我不明白为什么var markerCluster = new MarkerClusterer(map, markers);
周围有{}括号。