【问题标题】:Cluster Marker in android without user location没有用户位置的android中的集群标记
【发布时间】:2017-07-12 07:59:55
【问题描述】:

我是 android 中聚类标记的新手。我实现了 ClusterItem 并在 ClusterManager 中添加了所有其他标记 [Hotels] 和用户制造商。但问题是,当我不向 ClusterManager 添加用户标记时,它也不会聚集其他制造商。

我想要的是所有其他标记都应该聚集在用户制造商之外。请帮助我如何实现这一目标。

这就是我创建集群管理器的方式

clusterManager = new ClusterManager<ClusterItem>(this, mMap);
    mMap.setOnCameraIdleListener(clusterManager);
    mMap.setOnMarkerClickListener(clusterManager);

我正在像我们一样添加 clusterItem

    clusterManager.addItem(new ClusterItem(hotelsLocation));

【问题讨论】:

    标签: android google-maps google-maps-markers marker markerclusterer


    【解决方案1】:

    但问题是,当我不向 ClusterManager 添加用户标记时,它也不会聚集其他制造商。

    你能说得清楚一点吗?如果您想动态添加或删除集群项目,请使用

    mClusterManager.addItem(item);
    // mClusterManager.removeItem(item);
    mClusterManager.cluster();
    

    这里的cluster()方法的意思是,只是添加/删除了一个item,请重新计算clusters。

    【讨论】:

    • 即使我删除了用户的clusterItem,蓝点之类的东西也代表了我的位置[默认情况下会出现]。并且集群没有显示任何效果
    • 哦,蓝点,你有没有打算让它成为集群的一部分?
    • 不,我没有任何使用它的意图。我删除了那个蓝点。但仍然面临同样的问题
    【解决方案2】:

    像这样初始化clusterManager:

    clusterManager = new ClusterManager<>(getActivity(), googleMap);
    clusterManager.setRenderer(new OurClusterRenderer(getActivity(), googleMap, clusterManager));
    googleMap.setOnCameraChangeListener(clusterManager);
    googleMap.setOnMarkerClickListener(clusterManager);
    googleMap.setOnInfoWindowClickListener(clusterManager);
    googleMap.setInfoWindowAdapter(clusterManager.getMarkerManager());
    googleMap.setOnInfoWindowClickListener(clusterManager);
    

    然后添加您自己的标记(仅限酒店)并调用 .cluster():

    clusterManager.clearItems();
    for (HotelModel hotelModel : hotelModelNearMeList) {
        if (hotelModel.getPosition() != null) {
            clusterManager.addItem(hotelModel);
        }
    }
    clusterManager.cluster();
    

    最后,如果要添加用户标记:

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(new LatLng(location.getLatitude(),location.getLongitude()));
    markerOptions.anchor(0.5f, 1);
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_mylocation));
    googleMap.addMarker(markerOptions);
    

    如果您按照此步骤操作,即使您不添加任何 UserMarker,您的聚类也将完成。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2022-11-30
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多