Articles of markerclusterer

Google Maps Utility:如何从ClusterManager获取所有标记<?>?

对不起我的英语不好 我尝试了ClusterManager<?>.getMarkerCollection().getMarkers()方法,但它返回空集合。 我在我的应用程序Google Maps Utility Library 。 每次屏幕旋转后,我创buildAsynkTask并在后台线程从数据库读取数据,并添加项目到ClusterManager : cursor.moveToFirst(); while (!cursor.isAfterLast()) { SomeData row = readSomeDataRow(cursor); clusterManager.addItem(new ClusterItemImpl(row)); cursor.moveToNext(); } 当AsyncTask完成其工作(即在主线程中)时,我尝试从ClusterManager获取所有标记: clusterManager.cluster(); // cluster manager returns empty collection \|/ markers = clusterManager.getMarkerCollection().getMarkers(); 但是ClusterManager返回空集合。 可能在我调用getMarkers()的那一刻, ClusterManager却没有在地图上放置标记,稍后会做(可能在后台线程中)。 如果是这样的话,那我该怎么抓住那一刻呢?

Android Maps ClusteredMarkers – 不显示非集群?

我从这里使用Google Maps Android标记集群实用程序,并从我的服务器收到的列表中添加一堆项目(约700)。 我已经解决了最初的错误,我可以看到这些簇,然后放大它们,看到它们变成了单独的标记。 但是,有一些项目与其他项目相距甚远,所以即使在最大限度缩小的情况下,它们也绝不会聚集在一起。 出于某种原因,这些项目不会显示在我的地图上 – 不是当我放大时,而不是当我缩小。 我已经检查了坐标,他们是真实的,在我开始使用集群之前,我可以看到这些项目没有问题,所以我假设我在集群代码中做了一些错误。 这里是一些代码: private void setUpClusterer() { // Initialize the manager with the context and the map mClusterManager = new ClusterManager<>(getActivity(), map); vendorRenderer = new VendorRenderer(); mClusterManager.setRenderer(vendorRenderer); mClusterManager.setOnClusterClickListener(this); mClusterManager.setOnClusterItemClickListener(this); //point the maps listeners at the listeners implemented by the cluster manager map.setOnCameraChangeListener(mClusterManager); map.setOnMarkerClickListener(mClusterManager); //add items to the cluster […]

DefaultClusterRenderer getMarker()在缩放时返回null

我想要改变点击群集标记的背景。 我通过这样做 @Override onClusterClick(Cluster<MyObject> cluster) { Marker marker = renderer.getMarker(cluster); marker.setIcon(….); } 这可以很好地预期一种情况:放大或缩小时,集群标记的数量不会改变。 例如,如果我有一个15个集群和一个5个集群,然后放大或缩小一个级别,则保留相同的两个集群。 现在点击其中一个renderer.getMarker(cluster)返回null。 如果缩放后​​重新聚集,getMarker不为空。 我的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)); […]

在Android版Google地图v2中刷新制作者(ClusterItems)

我正在使用Google Maps 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 […]

使用集群pipe理器在地图上添加新标记不会反映更改,直到我放大和缩小地图

当我使用集群pipe理器以编程方式在地图上添加新标记时,它不反映更改,直到我更新放大和缩小。 我已经看到很多关于堆栈溢出的问题,但这对我不起作用, 所以请告诉我如何在不清除地图的情况下更新地图。 对我来说非常重要 码: 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);

如何使用适用于Android的Android Maps Utility Library显示InfoWindow

我正在使用Google Maps Android API实用程序库 ,以便以集群方式在地图中显示多个标记。 我已经按照说明使其工作,以及看看库中的例子,但我不知道如何显示一个InfoWindow时,点击一个标记。 我猜getMap().setOnMarkerClickListener(mClusterManager); 是一个pipe理onClick事件的人,如果注释掉了,我可以使用getMap().setInfoWindowAdapter(new InfoWindowAdapter() {));来覆盖它getMap().setInfoWindowAdapter(new InfoWindowAdapter() {)); 但我没有访问我的自定义标记对象。 不过,如果我使用getMap().setOnMarkerClickListener(mClusterManager); ,我找不到一个方法来显示标记被点击时InfoWindow 。 有没有人有关于如何实现这一点的想法? 提前感谢!

Google Maps Android v2中的群集标记

我必须在谷歌地图Android v2 API上的GoogleMap上放置不同的标记。 问题是多个标记被设置为相同的位置(lat / lng),所以用户只能看到“最新的”标记。 是否有可能(在最好的情况下:一个库),从同一区域聚集不同的标记(相对于缩放级别)? 我已经阅读了MarkerClusterer ,但这是为JavaScript APIdevise的。

谷歌地图api v2内存不足错误

我在我的应用程序中有一个巨大的内存问题。 我正在使用谷歌地图api v2与ClusterManager和自定义标记。 我通过调用markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap));来提供图像markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap)); 为每个标记基于其类别。 问题是:几个屏幕旋转后,我的应用程序崩溃,因为OOM错误: 05-14 11:04:12.692 14020-30201/rokask.rideabike E/art﹕ Throwing OutOfMemoryError "Failed to allocate a 4194316 byte allocation with 1627608 free bytes and 1589KB until OOM" 05-14 11:04:12.722 14020-30201/rokask.rideabike E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 19179 Process: rokask.rideabike, PID: 14020 java.lang.OutOfMemoryError: Failed to allocate a 4194316 byte allocation with 1627608 free bytes and 1589KB until OOM […]

Android地图utils集群图标颜色

有没有办法改变集群项目的背景颜色? (显示标记计数的那个,比如100+,200 + …)。 我试图查看ClusterManager的源代码,但找不到任何更改颜色的选项,但也许有人在这里知道如何做到这一点。 我基本上想要“体现”这些颜色。

显示适用于Android的Android地图实用程序库的自定义InfoWindow

我正在使用Android的Google Maps Utility库,允许在地图上创build集群,我需要显示一个自定义的InfoWindow但是我找不到任何方法来执行此操作。 为了显示信息窗口,我有以下类,在方法onClusterItemRendered是我有权访问标记的信息: class MyClusterRenderer extends DefaultClusterRenderer<MarkerItem> { public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MarkerItem> clusterManager) { super(context, map, clusterManager); } @Override protected void onBeforeClusterItemRendered(MarkerItem item, MarkerOptions markerOptions) { super.onBeforeClusterItemRendered(item, markerOptions); markerOptions.title(String.valueOf(item.getMarkerId())); } @Override protected void onClusterItemRendered(MarkerItem clusterItem, Marker marker) { super.onClusterItemRendered(clusterItem, marker); } } 有没有人使用这个库,知道如何显示一个自定义的InfoWindow比如它在Google Maps中的使用方式? 喜欢: getMap().setInfoWindowAdapter(new InfoWindowAdapter() { @Override public View getInfoWindow(Marker […]