如何为 Google 地图指定自定义聚类标记
How to specify custom cluster marker for a Google map
我有一张 Google 地图,其中放置了标记,并进行了聚类。
我可以使用如下代码轻松更改标记图标:
marker = new google.maps.Marker({
position: {
lat: location_data.lat,
lng: location_data.lng
},
map: map,
icon: img_url + 'map-marker.svg',
});
但是,我一直坚持更改群集图标。此代码可以很好地进行实际的聚类:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers
});
我发现那里的代码暗示了这一点:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers,
renderer: {
imagePath: img_url + 'map-cluster'
}
});
其中 map-cluster
是一堆文件的前缀,例如map-cluster1.svg
。这给了我错误:'Uncaught TypeError: e.renderer.render is not a function'.
我也试过这个:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers,
renderer: {
styles: [{
url: img_url + 'map-cluster1.svg',
}]
}
});
我再次遇到同样的错误。
还有其他代码示例似乎与我正在使用的代码没有任何关系,大量自定义对象(例如 https://gabrielwadi.medium.com/custom-cluster-marker-for-google-maps-how-to-8a7b858e2879). The API docs just point to this kind of unhelpful page: https://googlemaps.github.io/js-markerclusterer/interfaces/MarkerClustererOptions.html#renderer 我想我没有指定自定义 'renderer' 正确,但我发现的所有代码示例要么简单且不起作用(如上),要么太复杂以至于我不知道从哪里开始。
有人指点一下吗?我正在引用 https://maps.googleapis.com/maps/api/js as my main API script, and https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js 进行聚类。
MarkerClusterer 期望 interface with a render method:
const renderer = {
render: ({ count, position }) =>
new google.maps.Marker({
label: { text: String(count), color: "white", fontSize: "10px" },
position,
// adjust zIndex to be above other markers
zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,
}),
};
new markerClusterer.MarkerClusterer({
map,
markers,
renderer,
});
我有一张 Google 地图,其中放置了标记,并进行了聚类。
我可以使用如下代码轻松更改标记图标:
marker = new google.maps.Marker({
position: {
lat: location_data.lat,
lng: location_data.lng
},
map: map,
icon: img_url + 'map-marker.svg',
});
但是,我一直坚持更改群集图标。此代码可以很好地进行实际的聚类:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers
});
我发现那里的代码暗示了这一点:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers,
renderer: {
imagePath: img_url + 'map-cluster'
}
});
其中 map-cluster
是一堆文件的前缀,例如map-cluster1.svg
。这给了我错误:'Uncaught TypeError: e.renderer.render is not a function'.
我也试过这个:
const marker_clusterer = new markerClusterer.MarkerClusterer({
map: map,
markers: markers,
renderer: {
styles: [{
url: img_url + 'map-cluster1.svg',
}]
}
});
我再次遇到同样的错误。
还有其他代码示例似乎与我正在使用的代码没有任何关系,大量自定义对象(例如 https://gabrielwadi.medium.com/custom-cluster-marker-for-google-maps-how-to-8a7b858e2879). The API docs just point to this kind of unhelpful page: https://googlemaps.github.io/js-markerclusterer/interfaces/MarkerClustererOptions.html#renderer 我想我没有指定自定义 'renderer' 正确,但我发现的所有代码示例要么简单且不起作用(如上),要么太复杂以至于我不知道从哪里开始。
有人指点一下吗?我正在引用 https://maps.googleapis.com/maps/api/js as my main API script, and https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js 进行聚类。
MarkerClusterer 期望 interface with a render method:
const renderer = {
render: ({ count, position }) =>
new google.maps.Marker({
label: { text: String(count), color: "white", fontSize: "10px" },
position,
// adjust zIndex to be above other markers
zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,
}),
};
new markerClusterer.MarkerClusterer({
map,
markers,
renderer,
});