【问题标题】:add multiple ClusterManager to Google map将多个 ClusterManager 添加到 Google 地图
【发布时间】:2015-04-29 06:56:48
【问题描述】:

我正在尝试为 Google Map 使用两个 ClusterManager,但我只能添加一个 clustermanager 并且它是项目点击事件,

googleMap.setOnMarkerClickListener(mClusterManager);

mClusterManager.setOnClusterItemClickListener(new OnClusterItemClickListener<Person>() {

    @Override
    public boolean onClusterItemClick(Person item) {
        Log.v("Cluster Click", "Item Click:"+item.getName());
        return true;
    }
});

如何在 googlemap 中再添加一个集群管理器?

提前致谢。

【问题讨论】:

  • 您找到解决方案了吗? onClusterItemClickListener、onClusterClickListener 和 Map.setOnMarkerClickListener 有同样的问题。

标签: android google-maps-android-api-2


【解决方案1】:

你可以像这样使用 MarkerManager:

MarkerManager markerManager = new MarkerManager(mMap);

mClusterManager1 = new ClusterManager<>(getContext(), mMap,markerManager);
mClusterManager2 = new ClusterManager<>(getContext(), mMap,markerManager);

mMap.setOnMarkerClickListener(markerManager);

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {
            mClusterManager1.onCameraChange(cameraPosition);
            mClusterManager2.onCameraChange(cameraPosition);
        }
    });


mClusterManager1.setRenderer(myClusterRenderer1 = new MyClusterRenderer(getContext(), mMap, mClusterManager1));
mClusterManager2.setRenderer(myClusterRenderer2 = new MyClusterRenderer(getContext(), mMap, mClusterManager2));

【讨论】:

    【解决方案2】:

    是的,将点击侦听器委托给两个集群管理器。

    map.setOnClickListener(new GoogleMap.OnMarkerClickListener() {
      boolean onMarkerClick(Marker m) {
        clusterManager1.onMarkerClick(m)
        clusterManager2.onMarkerClick(m)
      }
    });
    

    【讨论】:

      【解决方案3】:
      Here is how I did it: 
      KOTLIN version
      
      override fun onMapReady(googleMap: GoogleMap?) {
       this.googleMap = googleMap
      
          //Step 1
          
              val markerManager = MarkerManager(googleMap) // your googleMap instance
          
           
          //Step 2
      
      
          mEquipmentClusterManager = ClusterManager(activity, googleMap,  markerManager)
          mCustomerClusterManager = ClusterManager(activity, googleMap, markerManager)
      
          googleMap.setOnMarkerClickListener(markerManager)
          googleMap.setOnCameraIdleListener(this)
      
          //Step 3
          
          val rendererCustomer =CustomerAroundMeMapPinsCluster(activity,googleMap, mCustomerClusterManager)
          
          val rendererEquipmentRental = EquipmentAroundMeMapPinsCluster(activity,googleMap,mEquipmentClusterManager)
      
          //Step 4
          
             
      
           mCustomerClusterManager.setOnClusterClickListener {
                          Toast.makeText(context, "Customer Cluster click", Toast.LENGTH_SHORT).show()
                          onClusterClick(it)
                          return@setOnClusterClickListener false
                      }
          mCustomerClusterManager.setOnClusterItemClickListener {
                      Toast.makeText(context, "Customer item click", Toast.LENGTH_SHORT).show()
                      
                      return@setOnClusterItemClickListener false
                  }
      
          mEquipmentClusterManager.setOnClusterClickListener {
                  Toast.makeText(context, "Equipment Cluster click", Toast.LENGTH_SHORT).show()
                  return@setOnClusterClickListener true
              }
              mEquipmentClusterManager.setOnClusterItemClickListener {
                  // there is a ticket for this
                  Toast.makeText(context, "Equipment item clicked", Toast.LENGTH_SHORT).show()
                  
                  return@setOnClusterItemClickListener false
              }
       
      
          mCustomerClusterManager.renderer = rendererCustomer
          mEquipmentClusterManager.renderer = rendererEquipmentRental
      
      
      }
      
      
           override fun onCameraIdle() {
                  mEquipmentClusterManager.cluster()
                  mCustomerClusterManager.cluster()
          
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        • 2018-05-26
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多