在 MarkerClustererOptions 的 MarkerClustererPlus 样式参数中无法正常工作
In MarkerClustererPlus style parameter of MarkerClustererOptions not working properly
我正在使用 MarkerClustererPlus,然后我为 MarkerClustererOptions 的样式参数创建了一个数组,传递不同类型的图标以显示在地图中,但它没有渲染所有图标。它只是从样式数组中选取第一个图标,而不是其他图标。
function initialize() {
var center = new google.maps.LatLng(63.078877, 21.660509);
var locations = [
{name:'ABB', lat:63.0883633, lon:21.6609529, image:'abb.png', webp:'http://www.abb.fi/'},
{name:'Wartsila', lat:63.102724, lon:21.610709, image:'', webp:'http://www.wartsila.com/'},
{name:'EPV', lat:63.092265, lon:21.55922, image:'', webp:'http://www.epv.fi/'},
{name:'Vacon', lat:63.0597281, lon:21.7370728, image:'', webp:'http://www.vacon.fi/'},
{name:'Vamp', lat:63.06153, lon:21.735314, image:'', webp:'http://www.vamp.fi/'}
];
var clusterStyles = [
{textColor: 'white', url: 'do.png', height: 50, width: 50 },
{textColor: 'white',url: 'do1.png',height: 50,width: 50},
{textColor: 'white', url: 'do2.png', height: 50, width: 50}
];
var clusterOptions = {
styles: clusterStyles
}
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var markers = [];
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i].lat, locations[i].lon),
icon:locations[i].image,
url:locations[i].webp
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers,clusterOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
body {
margin: 0;
padding: 10px 20px 20px;
font-family: Arial;
font-size: 16px;
}
#map-container {
padding: 6px;
border-width: 1px;
border-style: solid;
border-color: #ccc #ccc #999 #ccc;
-webkit-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
-moz-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
box-shadow: rgba(64, 64, 64, 0.1) 0 2px 5px;
width: 600px;
}
#map {
width: 600px;
height: 400px;
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MarkerClusterer v3 Simple Example</title>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="markerclusterer.js"> </script>
</head>
<body>
<div id="map-container"><div id="map"></div></div>
</body>
</html>
我遗漏了哪一步,我该如何解决。
我不确定您对样式的期望是什么,但我想您误解了目的。
您定义了3个样式,什么意思:
- 第一种样式将用于少于 10 个标记的簇
- 第二种样式将用于具有 10-99 个标记的簇
- 第三种样式将用于所有其他集群
在您的代码中您创建了 5 个标记(它们将被聚类),因此 Markerclusterer 将始终使用第一种样式,因为标记总是少于 10 个。
向Markerclusterer添加更多标记,当一个集群包含超过9个(或超过99个)标记时,其他图标也会被使用。
要选择特定样式,您必须设置 calculator
函数:
styles: An array of ClusterIconStyle elements defining the styles of
the cluster markers to be used. The element to be used to style a
given cluster marker is determined by the function defined by the
calculator property.
您可以查看其余文档 here。
我正在使用 MarkerClustererPlus,然后我为 MarkerClustererOptions 的样式参数创建了一个数组,传递不同类型的图标以显示在地图中,但它没有渲染所有图标。它只是从样式数组中选取第一个图标,而不是其他图标。
function initialize() {
var center = new google.maps.LatLng(63.078877, 21.660509);
var locations = [
{name:'ABB', lat:63.0883633, lon:21.6609529, image:'abb.png', webp:'http://www.abb.fi/'},
{name:'Wartsila', lat:63.102724, lon:21.610709, image:'', webp:'http://www.wartsila.com/'},
{name:'EPV', lat:63.092265, lon:21.55922, image:'', webp:'http://www.epv.fi/'},
{name:'Vacon', lat:63.0597281, lon:21.7370728, image:'', webp:'http://www.vacon.fi/'},
{name:'Vamp', lat:63.06153, lon:21.735314, image:'', webp:'http://www.vamp.fi/'}
];
var clusterStyles = [
{textColor: 'white', url: 'do.png', height: 50, width: 50 },
{textColor: 'white',url: 'do1.png',height: 50,width: 50},
{textColor: 'white', url: 'do2.png', height: 50, width: 50}
];
var clusterOptions = {
styles: clusterStyles
}
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var markers = [];
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i].lat, locations[i].lon),
icon:locations[i].image,
url:locations[i].webp
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers,clusterOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
body {
margin: 0;
padding: 10px 20px 20px;
font-family: Arial;
font-size: 16px;
}
#map-container {
padding: 6px;
border-width: 1px;
border-style: solid;
border-color: #ccc #ccc #999 #ccc;
-webkit-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
-moz-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
box-shadow: rgba(64, 64, 64, 0.1) 0 2px 5px;
width: 600px;
}
#map {
width: 600px;
height: 400px;
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MarkerClusterer v3 Simple Example</title>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="markerclusterer.js"> </script>
</head>
<body>
<div id="map-container"><div id="map"></div></div>
</body>
</html>
我遗漏了哪一步,我该如何解决。
我不确定您对样式的期望是什么,但我想您误解了目的。
您定义了3个样式,什么意思:
- 第一种样式将用于少于 10 个标记的簇
- 第二种样式将用于具有 10-99 个标记的簇
- 第三种样式将用于所有其他集群
在您的代码中您创建了 5 个标记(它们将被聚类),因此 Markerclusterer 将始终使用第一种样式,因为标记总是少于 10 个。
向Markerclusterer添加更多标记,当一个集群包含超过9个(或超过99个)标记时,其他图标也会被使用。
要选择特定样式,您必须设置 calculator
函数:
styles: An array of ClusterIconStyle elements defining the styles of the cluster markers to be used. The element to be used to style a given cluster marker is determined by the function defined by the calculator property.
您可以查看其余文档 here。