分为 普通地图、卫星图、空白地图、交通图、热力图、地图控制、标注覆盖物、划线、文字、弹出框、待续。。。
@1普通地图
@2卫星地图
@3空白地图
@4实时交通图
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//开启交通图
mBaiduMap.setTrafficEnabled(true);
@5城市热力图
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//开启交通图
mBaiduMap.setBaiduHeatMapEnabled(true);
@6地图控制及手势
地图Logo
- 默认在左下角显示,不可以移除。
通过mMapView.setLogoPosition(LogoPosition.logoPostionleftBottom);方法,使用枚举类型控制显示的位置,共支持6个显示位置(左下,中下,右下,左上,中上,右上)。
- 地图Logo不允许遮挡,可通过mBaiduMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);方法可以设置地图边界区域,来避免UI遮挡。
其中参数paddingLeft、paddingTop、paddingRight、paddingBottom参数表示距离屏幕边框的左、上、右、下边距的距离,单位为屏幕坐标的像素密度。
指南针
指南针默认为开启状态,可以关闭显示 。
比例尺
比例尺默认为开启状态,可以关闭显示。同时支持设置MaxZoomLevel和minZoomLevel,可通过mMapView.getMapLevel获取当前地图级别下比例尺所表示的距离大小。
地图手势
地图平移
控制是否启用或禁用平移的功能,默认开启。如果启用,则用户可以平移地图
地图缩放
控制是否启用或禁用缩放手势,默认开启。如果启用,用户可以双指点击或缩放地图视图。
地图俯视(3D)
控制是否启用或禁用俯视(3D)功能,默认开启。如果启用,则用户可使用双指 向下或向上滑动到俯视图。
地图旋转
控制是否启用或禁用地图旋转功能,默认开启。如果启用,则用户可使用双指 旋转来旋转地图。
禁止所有手势
控制是否一并禁止所有手势,默认关闭。如果启用,所有手势都将被禁用。
@7标注覆盖物 以及弹出框
比较完美的添加方式,请跳转http://blog.csdn.net/treasureqian/article/details/67638773点击打开链接
新建一个Marker标记
//定义Maker坐标点
final LatLng point = new LatLng(lat, lon);
//始终保证当前位置是屏幕的正中间
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(point);
map.setMapStatus(update);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_red_flag);
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap)
.zIndex(9)
.draggable(true);
map.addOverlay(option);
Marker的点击事件以及弹出框
//Mark点击事件
map.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
marker_latitude = marker.getPosition().latitude;
marker_longitude = marker.getPosition().longitude;
//创建InfoWindow展示的view
View inflate = LayoutInflater.from(getApplicationContext()).inflate(R.layout.user_map_infowindow, null);
TextView ac_join = (TextView) inflate.findViewById(R.id.user_map_marker_activity_join);
ac_join.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(UserMapActivity.this, UserOrienteeringDescActivity.class));
}
});
//定义用于显示该InfoWindow的坐标点
LatLng pt = new LatLng(marker_latitude, marker_longitude);
InfoWindow mInfoWindow = new InfoWindow(inflate, pt, -80);
map.showInfoWindow(mInfoWindow);
return false;
}
});
Marker的拖拽
//调用BaiduMap对象的setOnMarkerDragListener方法设置marker拖拽的监听
mBaiduMap.setOnMarkerDragListener(new OnMarkerDragListener() {
public void onMarkerDrag(Marker marker) {
//拖拽中
}
public void onMarkerDragEnd(Marker marker) {
//拖拽结束
}
public void onMarkerDragStart(Marker marker) {
//开始拖拽
}
});
Marker的动画
// 通过marker的icons设置一组图片,再通过period设置多少帧刷新一次图片资源
ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>();
giflist.add(bdA);
giflist.add(bdB);
giflist.add(bdC);
OverlayOptions ooD = new MarkerOptions().position(point).icons(giflist)
.zIndex(0).period(10);
map.addOverlay(ooD);
Marker出现的动画
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_red_flag);
MarkerOptions option = new MarkerOptions()
.position(point)
.icon(bitmap)
.zIndex(9)
.draggable(true);
option.animateType(MarkerOptions.MarkerAnimateType.grow);
map.addOverlay(option);
option.animateType(MarkerOptions.MarkerAnimateType.grow);//生长动画
option.animateType(MarkerOptions.MarkerAnimateType.drop);//从天而降动画
Marker设置透明度
MarkerOptions ooA = new MarkerOptions().position(llD).icons(giflist)
.zIndex(0).period(10).alpha(0.5);
mBaiduMap.addOverlay(ooA);
Marker点聚合功能(百度SDK未提供直接的方法,但是开发包里有,需要自己合成,具体参考代码下方提供的博客,借鉴的)
// 初始化点聚合管理类
ClusterManager mClusterManager = new ClusterManager<>(this, mBaiduMap);
// 向点聚合管理类中添加Marker实例
LatLng llA = new LatLng(39.963175, 116.400244);
List<MyItem> items = new ArrayList<>();
items.add(new MyItem(llA));
mClusterManager.addItems(items);
参考博客:http://blog.csdn.net/u010635353/article/details/52386097
@8 划线
1.画实线(只需要确认两个点即可)
public void drawLines(){
double startlats=39.960299;
double startlongs=116.418642;
double latline=9.968263;
double lngline=116.439914;
LatLng p1 = new LatLng(startlats, startlongs);
LatLng p2 = new LatLng(latline, lngline);
List<LatLng> points = new ArrayList<LatLng>();
points.add(p1);
points.add(p2);
OverlayOptions ooPolyline = new PolylineOptions().width(10).color(0xAAFF0000).points(points);
mBaiduMap.addOverlay(ooPolyline);
}
2.画虚线(实际上不断的划线,)
//线段绘制
public void drawLines() {
double destination_latitude = 39.915168;
double destination_longitude = 116.403875;
double sub_latitude = destination_latitude - latitude;
double sub_longitude = destination_longitude - longitude;
point_list = new ArrayList<>();
int j = 0;
for (int i = 0; i < 20; i++) {
p1 = new LatLng(latitude + sub_latitude * j / 40, longitude + sub_longitude * j / 40);
p2 = new LatLng(latitude + sub_latitude * (j + 1) / 40, longitude + sub_longitude * (j + 1) / 40);
point_list.clear();
point_list.add(p1);
point_list.add(p2);
ooPolyline = new PolylineOptions().width(10).color(0xAAFF0000).points(point_list);
map.addOverlay(ooPolyline);
j = j + 2;
}
}
//线段绘制
public void drawLines() {
double destination_latitude = 39.915168;
double destination_longitude = 116.403875;
point_list = new ArrayList<>();
p1 = new LatLng(latitude, longitude);
p2 = new LatLng(destination_latitude, destination_longitude);
point_list.add(p1);
point_list.add(p2);
ooPolyline = new PolylineOptions().dottedLine(true).width(8).color(0xAA666666).points(point_list);
map.addOverlay(ooPolyline);
}
@9文字
//定义文字所显示的坐标点
LatLng llText = new LatLng(39.86923, 116.397428);
//构建文字Option对象,用于在地图上添加文字
OverlayOptions textOption = new TextOptions()
.bgColor(0xAAFFFF00)
.fontSize(24)
.fontColor(0xFFFF00FF)
.text("Hello World")
.rotate(-30)
.position(llText);
//在地图上添加该文字对象并显示
mBaiduMap.addOverlay(textOption);
未完待续。。。。。