我有一组标记可以聚集在我的地图上.另一组标记单独显示,我碰巧需要将这些标记显示在聚类上方.我尝试在群集选项对象中设置zIndex,低于第二组标记的zIndex,但无济于事.知道如何去做吗?
javascript google-maps-api-3 google-maps-markers markerclusterer
我正在使用MarkerClusterer.当我在完全相同的位置上有两个或更多标记时,API仅显示1个标记 - 最上面的一个.但不知何故,我想显示所有标记,因为每个标记将打开不同的弹出窗口.我搜索了几个解决方案,但没有一个似乎工作任何人都有类似的问题,并会分享一个解决方案?
当我使用集群管理器以编程方式在地图上添加新标记时,它不会反映更改,直到我更新放大和缩小.
我已经看到很多关于堆栈溢出的问题,但这对我不起作用,
所以请告诉我如何在不清除地图的情况下更新地图.
码:
for (int i = 0; i < name.length; i++)
{
Person_marker person_marker = new Person_marker(createRandLocation(latLng),
name[i], getAddress(latLng), typedArray.getResourceId(i, -1), time[i], acuracy[i]);
person_markerList.add(person_marker);
}
clusterManager.clearItems(); clusterManager.addItems(person_markerList);
Run Code Online (Sandbox Code Playgroud) 我目前有一个谷歌地图填充了数据库中的数据.我正在使用markerclusterer v3来聚类标记以使地图加载更快.我已经搜索了文档,似乎无法找到一种方法来获取地图边界中所有标记的列表.基本上我正在尝试在外部div中创建标记地址的外部列表.目前在页面加载时,它会附加整个收件人列表.我想要做的只是标记,以及当时出现在该地图上的群集中包含的标记出现在列表中.所以在缩放13处有6个簇,每个簇有3个,还有一个独奏标记.在缩放14处,存在3个3和2个独立标记的簇.在缩放13处,列表中将有19个地址,而在缩放14处,列表中将有11个地址.只是地图边界中的标记列表.我目前在初始地图创建时加载所有地址一次.我想在每次缩放时向服务器创建一个ajax帖子,但认为在每个地图移动上调用服务器都没有必要.必须有一种方法来获取由markersclusterer控制的边界中的标记列表.
.js文件
var markers = [];
for (var i = 0; i < data.coords.length; i++) {
var dataInd = data.coords[i];
var latLng = new google.maps.LatLng(dataInd[1],dataInd[2]);
var marker = new google.maps.Marker({position: latLng});
markers.push(marker);
}
var map;
var myOptions = {
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
function init() {
map = new google.maps.Map(document.getElementById("map"), myOptions);
var markerCluster = new MarkerClusterer(map, markers);
}
for (var i=0; i < markers.length; i++) {
if (map.getBounds.contains(markers[i])) {
console.log(markers);
} else {
console.log('failed');
}
}
google.maps.event.addDomListener(window, 'load', …Run Code Online (Sandbox Code Playgroud) 我正在使用来自github的MarkerCluster_compiled.js.但是当逻辑工作时,它的图形从昨天开始失败.
该问题似乎是由" https://google-maps-utility-library-v3.googlecode.com/svn "返回404 引起的,并且所有群集标记图像都依赖于此网址.(这个谷歌地图v3 svn网址仍然在谷歌的公共领域)
在我看来,这个特殊的"404"的影响并非微不足道,因为我看到人们的现场网站已经受到影响.我很惊讶这个问题可能发生在谷歌身上.
例如:github.io上的marker-clusterer的advanced_example不再有效(由于声誉不佳,我无法发布链接).
期待看到Google修复此问题或任何其他建议.
我最近使用API的V3(最新版本)创建了Google Map.我的要求之一是我能够渲染超过100万个标记(在合理的时间内).合理的时间不到15秒.
我知道同时渲染所有100万个标记是相当疯狂的,这就是我调查性能选项的原因.我遇到的一个选项是MarkerClusterer:https://developers.google.com/maps/articles/toomanymarkers
但是,我现在开始在使用超过100,000个标记测试MarkerClusterer时看到性能问题,因为渲染地图和标记需要很长时间(1分钟+).最终,我设法使页面崩溃了大约200,000个标记.
使用这么多标记时,有没有办法提高地图的性能?
在此先感谢您的帮助.
javascript performance google-maps google-maps-api-3 markerclusterer
我正在使用谷歌地图Android API实用程序库,我正在从互联网上下载我想用作标记的某些图像.我正在做的方式就像在下面的代码片段:
class MarkerItemClusterRenderer extends DefaultClusterRenderer<MarkerItem> {
...
@Override
protected void onBeforeClusterItemRendered(MarkerItem item,
final MarkerOptions markerOptions) {
super.onBeforeClusterItemRendered(item, markerOptions);
mImageLoader.get(item.getImageUrl(), new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("XXX", error.toString());
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
if (response != null && response.getBitmap() != null) {
mImageIcon.setImageBitmap(response.getBitmap());
Bitmap icon = mIconGenerator.makeIcon();
Bitmap bhalfsize = Bitmap.createScaledBitmap(icon, 150,
150, false);
markerOptions.icon(BitmapDescriptorFactory
.fromBitmap(bhalfsize));
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
问题是,当下载图像时,地图(以及标记)不会刷新,因此大多数时候(但并非总是如此)我仍然会看到红色的默认标记.
我试过,mImageIcon.invalidate(); mImageIcon.requestLayout();但仍然没有运气.
反正有没有实现这个目标?非常感谢提前.
android google-maps google-maps-markers markerclusterer google-maps-android-api-2
有人可以让我知道如何设置MarkerClusterer plus以显示一种颜色的所有群集吗?正如你所看到的那样,当MarkerClusterer在一个范围外时会自动改变它们的颜色,但我想让它们全部用一种颜色?
谢谢

我想在点击时更改群集标记的背景.我通过这样做
@Override
onClusterClick(Cluster<MyObject> cluster) {
Marker marker = renderer.getMarker(cluster);
marker.setIcon(....);
}
Run Code Online (Sandbox Code Playgroud)
对于一种情况,这很好用:当我放大或缩小时,簇标记的数量不会改变.例如,如果我有一个15个集群和一个5个集群,那么放大或缩小一个级别,保留相同的两个集群.单击其中一个现在renderer.getMarker(cluster)返回null.如果它们在缩放后重新聚类,则getMarker不为null.
我的DefaultClusterRenderer在下面.我检查了标记onClusteredRendered,它永远不会为空.这是DefaultClusterRenderer中的错误还是应该执行其他操作?
private class MyRenderer extends DefaultClusterRenderer<MyObject> {
private IconGenerator iconGenerator;
private float density;
public MyRenderer(Context context, GoogleMap map, ClusterManager<MyObject> clusterManager) {
super(context, map, clusterManager);
density = context.getResources().getDisplayMetrics().density;
}
@Override
protected void onBeforeClusterItemRendered(MyObject item, MarkerOptions markerOptions) {
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_pin));
}
@Override
protected void onBeforeClusterRendered(Cluster<MyObject> cluster, MarkerOptions markerOptions) {
if(iconGenerator == null) {
iconGenerator = new IconGenerator(getActivity());
iconGenerator.setContentView(makeTextView(getActivity()));
}
iconGenerator.setBackground(makeBackground(false));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon(String.valueOf(cluster.getSize()))));
}
@Override
protected void onClusterRendered(Cluster<MyObject> cluster, …Run Code Online (Sandbox Code Playgroud) markerclusterer ×10
google-maps ×7
android ×3
javascript ×2
jquery ×1
performance ×1
react-native ×1