}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
mMapView.onDestroy();
super.onDestroy();
}
/**
- 向地图添加Marker点
*/
public void addMarkers() {
// 添加Marker点
LatLng llA = new LatLng(39.963175, 116.400244);
LatLng llB = new LatLng(39.942821, 116.369199);
LatLng llC = new LatLng(39.939723, 116.425541);
LatLng llD = new LatLng(39.906965, 116.401394);
LatLng llE = new LatLng(39.956965, 116.331394);
LatLng llF = new LatLng(39.886965, 116.441394);
LatLng llG = new LatLng(39.996965, 116.411394);
List items = new ArrayList();
items.add(new MyItem(llA));
items.add(new MyItem(llB));
items.add(new MyItem(llC));
items.add(new MyItem(llD));
items.add(new MyItem(llE));
items.add(new MyItem(llF));
items.add(new MyItem(llG));
mClusterManager.addItems(items);
}
/**
- 每个Marker点,包含Marker点坐标以及图标
*/
public class MyItem implements ClusterItem {
private final LatLng mPosition;
public MyItem(LatLng latLng) {
mPosition = latLng;
}
@Override
public LatLng getPosition() {
return mPosition;
}
@Override
public BitmapDescriptor getBitmapDescriptor() {
return BitmapDescriptorFactory
.fromResource(R.drawable.icon_gcoding);
}
}
@Override
public void onMapLoaded() {
// TODO Auto-generated method stub
ms = new MapStatus.Builder().zoom(9).build();
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(ms));
}
}
基本的逻辑都在demo里面有所实现,我就不详细说了。 我说几点可能需要我们自己改动的一些细节。
1.地图级别
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(Float.parseFloat(“10.8”)).build()));//设置缩放级别
2.设置聚合圆圈的点击事件
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener() {
@Override
public boolean onClusterClick(Cluster cluster) {
float level = mBaiduMap.getMapStatus().zoom;
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(level+1).build()));
return false;
}
});
这个我是点击聚合圆圈的时候 ,将地图级别放大一级,具体你们产品要求是什么样,自己在监听实现就好
3.设置聚合点圆圈样式
这个样式背景修改是在text_bubble.xml里面
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:orientation=“vertical”>
<com.baidu.mapapi.clusterutil.ui.RotationLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:background=“@drawable/map_circle_bg”
android:orientation=“vertical”>
<TextView
android:id=“@+id/text”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center_horizontal”
android:paddingBottom=“5dp”
android:paddingLeft=“10dp”
android:paddingRight=“10dp”
android:paddingTop=“5dp”/>
</com.baidu.mapapi.clusterutil.ui.RotationLayout>
上面的 android:background=“@drawable/map_circle_bg” 这个就是自己定义的样式,我这个是写了一个带背景色的圆形
map_circle_bg.xml
<shape
xmlns:android=“http://schemas.android.com/apk/res/android”
android:shape=“oval”
android:useLevel=“false” >
<solid
android:color=“@color/green_theme” />
<size android:width=“6dp”
android:height=“6dp” />
颜色就自己改成自己的颜色就可以。
4.设置点击 mark点 弹出pop提示框
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener() {
@Override
public boolean onClusterItemClick(final BaiduItem item) {
TextView tv = new TextView(getApplicationContext());
tv.setBackgroundResource(R.drawable.icon_pop);
tv.setGravity(Gravity.CENTER_VERTICAL);
tv.setText(item.getName());
//定义用于显示该InfoWindow的坐标点
LatLng pt = new LatLng(item.getPosition().latitude, item.getPosition().longitude);
//创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量
InfoWindow mInfoWindow = new InfoWindow(tv, pt, -47);
//显示InfoWindow
mBaiduMap.showInfoWindow(mInfoWindow);
return false;
}
});
就是上面图三的提示框,这个需要注意的就是icon_pop这个图片用.9的图片,因为提示信息过多的时候可以自动适配。
5.设置修改marker点的 图片样式
大家看图中 我们的点出来的都是 红色和绿色的小房子,不是传统的 那种红色的小标注点
@Override
public BitmapDescriptor getBitmapDescriptor() {
if(state.equals(“1”)){
return BitmapDescriptorFactory.fromResource(R.drawable.icon_map_wkg);
}else if(state.equals(“2”)){
return BitmapDescriptorFactory.fromResource(R.drawable.icon_map_jg);
}else if(state.equals(“3”)){
return BitmapDescriptorFactory.fromResource(R.drawable.icon_map_wkg);
}else{
return BitmapDescriptorFactory.fromResource(R.drawable.icon_map_wkg);
}
}
这个state是自己new这个对象的时候,构造里面传一个值进来,用不同的值判断显示不同的标注icon。
最后给大家放上一个demo,是eclipse版本的。as版本的 官网下载下来的就是as的demo。
资源分享
- 最新大厂面试专题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
- 对应导图的Android高级工程师进阶系统学习视频
最近热门的,NDK,热修复,MVVM,源码等一系列系统学习视频都有!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
icon。
最后给大家放上一个demo,是eclipse版本的。as版本的 官网下载下来的就是as的demo。
资源分享
- 最新大厂面试专题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
[外链图片转存中…(img-nxqXSY7W-1715344560142)]
- 对应导图的Android高级工程师进阶系统学习视频
最近热门的,NDK,热修复,MVVM,源码等一系列系统学习视频都有!
[外链图片转存中…(img-2DAceDGv-1715344560143)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!