如下

public class MyGoogleItem implements GoogleClusterItem {public final LatLng mPosition;public int statue;public CarListData carInfo;public String snippet="";public  int profilePhoto;public MyGoogleItem(LatLng latLng, int statue, CarListData info) {this.mPosition = latLng;this.statue = statue;this.carInfo = info;
}@Override
public LatLng getPosition() {return this.mPosition;
}@Override
public String getTitle() {return "";
}@Override
public String getSnippet() {return snippet;
}@Override
public int getProfilePhoto() {if (statue == 2) {return R.mipmap.monitor_che_icon17;} else if (statue == 3) {return R.mipmap.monitor_che_icon9;} else if (statue == 4) {return R.mipmap.monitor_che_icon38;} else if (statue == 5) {return R.mipmap.monitor_che_icon1;} else {return R.drawable.loation_start;}}

}

先自定义MyGoogleItem。设置图片样式:getProfilePhoto,

private void initGoogleMap() {try {MapsInitializer.initialize(getActivity());} catch (Exception e) {e.printStackTrace();}int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this.getActivity());LogPlus.e("errorcode=" + errorCode);if (ConnectionResult.SUCCESS != errorCode) {GooglePlayServicesUtil.getErrorDialog(errorCode, this.getActivity(), 0).show();} else {mMapView.getMapAsync(this);if (mGoogleMap != null) {LogPlus.e("mGoogleMap=" + mGoogleMap);// initVolley();if (LocationPoint != null) {LatLng india = new LatLng(LocationPoint.latitude, LocationPoint.longitude);mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(india, 9));}
mClusterManager = new ClusterManager<>(this.getActivity(), mGoogleMap);
mClusterManager.setRenderer(new CarRenderer());
// mClusterManager.setAnimation(true);
// Point the map's listeners at the listeners implemented by the cluster
// manager.点聚合监听
mGoogleMap.setOnCameraIdleListener(mClusterManager);
mGoogleMap.setOnMarkerClickListener(mClusterManager);
 mClusterManager.setOnClusterItemClickListener(item -> {startActivity(CarDetailActivity.newIntent(getActivity(), item.carInfo.carInfo.getCarType(), item.carInfo.carInfo.GUID));return true;});mClusterManager.setOnClusterClickListener(cluster -> {float level = mGoogleMap.getCameraPosition().zoom;mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LocationPoint, level +2));return true;});}}}

重要的是设置setRenderer()

;

然后新建CarRenderer();

private class CarRenderer extends DefaultClusterRenderer<MyGoogleItem> {private final IconGenerator mIconGenerator = new IconGenerator(MyApplication.getInstance());private final IconGenerator mClusterIconGenerator = new IconGenerator(MyApplication.getInstance());private final ImageView mImageView;private final ImageView mClusterImageView;private final int mDimension;
public CarRenderer() {super(MyApplication.getInstance(), getMap(), mClusterManager);View multiProfile = getLayoutInflater().inflate(R.layout.multi_profile, null);mClusterIconGenerator.setContentView(multiProfile);mClusterImageView = multiProfile.findViewById(R.id.image);mImageView = new ImageView(MyApplication.getInstance());mDimension = (int) getResources().getDimension(R.dimen.custom_profile_image);mImageView.setLayoutParams(new ViewGroup.LayoutParams(mDimension, mDimension));int padding = (int) getResources().getDimension(R.dimen.custom_profile_padding);mImageView.setPadding(padding, padding, padding, padding);mIconGenerator.setContentView(mImageView);
}
@Override
protected void onBeforeClusterItemRendered(@NonNull MyGoogleItem person, MarkerOptions markerOptions) {// Draw a single person - show their profile photo and set the info window to show their name  markerOptions.icon(getItemIcon(person)).title(person.snippet);
}
private BitmapDescriptor getItemIcon(MyGoogleItem person) {// mImageView.setImageResource(person.getProfilePhoto());mImageView.setBackground(getActivity().getResources().getDrawable(person.getProfilePhoto()));// mImageView.setBackground(getActivity().getResources().getDrawable(person.profilePhoto));Bitmap icon = mIconGenerator.makeIcon();return BitmapDescriptorFactory.fromBitmap(icon);
}@Override
protected void onBeforeClusterRendered(@NonNull Cluster<MyGoogleItem> cluster, MarkerOptions markerOptions) {super.onBeforeClusterRendered(cluster,markerOptions);// Draw multiple people.// Note: this method runs on the UI thread. Don't spend too much time in here (like in this example).// markerOptions.icon(getClusterIcon(cluster));
}
 @Overrideprotected boolean shouldRenderAsCluster(Cluster cluster) {// Always render clusters./* if(mGoogleMap.getCameraPosition().zoom>=18.0){return false;}else {return cluster.getSize() > 1;}*/return cluster.getSize() > 1;}// @Overrideprotected String getClusterText(int bucket) {if (bucket < 1000) {return String.valueOf(bucket);}return "999+";}
@Override
protected int getBucket(Cluster cluster) {int size = cluster.getSize();return size;/* if (size <= BUCKETS[0]) {return size;} else {for(int i = 0; i < BUCKETS.length - 1; ++i) {if (size < BUCKETS[i + 1]) {return BUCKETS[i];}}return BUCKETS[BUCKETS.length - 1];}*/
}

}

CarRenderder里就是设置各种聚合样式,marker点样式:包括显示数据:

multi_profile  即为layout样式marker点样式设置。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:padding="2dp"android:layout_width="wrap_content"android:layout_height="wrap_content"><ImageViewandroid:id="@+id/image"android:layout_width="@dimen/custom_profile_image"android:layout_height="@dimen/custom_profile_image"android:src="@mipmap/monitor_che_icon17"/>
</FrameLayout>

android google地图点聚合样式修改相关推荐

  1. uber_像Uber这样的Android Google地图样式

    uber Have you ever noticed how Uber and other few popular location-based applications have a differe ...

  2. Android Google地图接入(一)

    最近项目中需要接入Google地图,遇到很多问题,现在记录下来,供以后参考. 1. 登录Google API Console,注册Android API密钥(需要翻墙 ~_~) 得到API KEY: ...

  3. 关于android原生AlertDialog列表item样式修改问题

    AlertDialog条目列表的样式修改问题 刚刚在写一个简单的弹出框时遇到了一个问题,这个弹出框没有标题.没有确定取消按钮,只有一个条目列表,就相当于是视频切换清晰度时弹出的那种选择弹出框.按照最基 ...

  4. Android Google地图接入(二)

    前面完成了地图的显示,现在想要获取位置数据,需要使用到另一个API:Google Play services Location API. 接收位置更新基本流程: 1. 连接LocationServic ...

  5. android德地图点聚合,点聚合-点标记-示例中心-JS API 示例 | 高德地图API

    点聚合 html, body, #container { height: 100%; width: 100%; } .input-card { width: 25rem; } .input-card ...

  6. 高德地图轨迹展示样式修改

    自定义轨迹的icon,应该用import 先引入图片,再使用,否则加载不出来 import carUrl from '../../assets/img/car.png' var map = new A ...

  7. Android百度地图悬浮窗样式,JS百度地图搜索悬浮窗功能

    效果图: 代码 body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";font-size:14px;} # ...

  8. vue 使用百度地图以及地图样式、绘制 点、点聚合和多边形区域、自定义点样式、聚合样式等

    index.html 引入百度地图api: <script type="text/javascript" src="https://api.map.baidu.co ...

  9. Google 地图 API for Android

    原文:Introduction to Google Maps API for Android 作者: Eunice Obugyei 译者:kmyhy 从健康类 app Runkeeper 到游戏 ap ...

  10. echarts配合google地图,并自定义google地图的样式

    前言 全网关于google地图配合echarts的使用找了很久,其实echarts结合百度地图使用会更方便一些.公司因为想要更国际化,所以更倾向于使用google地图 准备工作 要想使用google地 ...

最新文章

  1. DEV控件自定义排序实现
  2. iPhone 6 Screens Demystified
  3. docker java 最小镜像_docker构建JDK最小镜像
  4. java文件名特殊字符_Java 8:用名字读取特殊字符的文件
  5. Some Essential JavaScript Questions And Answers(2)
  6. IdentityServer(14)- 通过EntityFramework Core持久化配置和操作数据
  7. linux脚本定时执行,Shell脚本实现每个工作日定时执行指定程序
  8. ajax上传多行数据及数组循环添加对象
  9. AngularJS 后台交互
  10. shared memory realm does not exist解决办法
  11. 如何解决Configuration system failed to initialize
  12. 【项目一、xxx病虫害检测项目】2、网络结构尝试改进:Resnet50、SE、CBAM、Feature Fusion
  13. Android 控件的各种方法介绍
  14. 2020-12-06 高等数学:常用积分公式
  15. 软件开发的8大主流方法介绍
  16. android 设置闹钟,android 设置闹钟
  17. Windows10 怎么添加开机启动项
  18. 中国的铁路订票系统在世界上属于什么水平?
  19. 2019第九届蓝桥杯大赛个人赛决赛真题C语言B组——调手表
  20. html5研究背景及意义,基于HTML5的统计图表系统的研究与设计

热门文章

  1. 2021“数维杯”国际大学生数学建模竞赛B题思路
  2. 【TSP】基于matlab遗传算法求解中国35省会城市旅行商问题【含Matlab源码 1222期】
  3. 【TWVRP】基于matlab灰狼算法求解带时间窗的车辆路径规划问题【含Matlab源码 361期】
  4. nba球队查询系统c语言代码,NBA球队中英文对照一览表
  5. opencv注释中的@brief、@code/@endcode、@param、@sa 以及 如何在pycharm中看到opencv函数的完整注释
  6. @excel 注解_SpringBoot中关于Excel的导入和导出
  7. php检测http状态码,分享一段php判断url http状态码的代码
  8. xampp mysql关机意外_xampp运行MySQL shutdown unexpectedly解决方法
  9. stem函数--Matplotlib
  10. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义