在百度地图(一)的基础上,进行的操作
1.地图图层
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_1:
// 显示普通地图
baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
baiduMap.setTrafficEnabled(false);
break;
case KeyEvent.KEYCODE_2:
// 显示卫星图
baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
baiduMap.setTrafficEnabled(false);
break;
case KeyEvent.KEYCODE_3:
// 交通图
baiduMap.setTrafficEnabled(true);
break;
}
return super.onKeyDown(keyCode, event);
}
2.圆形覆盖物
public void init() {
CircleOptions options = new CircleOptions(); // 创建一个圆形覆盖物的参数
options.center(mZafu_donghu) // 圆心
.radius(1000) // 半径
.stroke(new Stroke(20, 0x55FF0000))// 线条宽度、颜色
.fillColor(0x5500FF00); // 圆的填充颜色
baiduMap.addOverlay(options); // 添加一个覆盖物
}
3.文字覆盖物
public void init() {
TextOptions options = new TextOptions();
options.position(mZafu_donghu) // 位置
.text("zafu") // 文字内容
.fontSize(20) // 文字大小
.fontColor(0XFF000000) // 文字颜色
.bgColor(0X55FF0000) // 背景颜色
.rotate(30); // 旋转
baiduMap.addOverlay(options);
}
4.标志覆盖物
private View pop;
private TextView tv_title;
@Override
public void init() {
initMarker();
baiduMap.setOnMarkerClickListener(mOnMarkerClickListener);
baiduMap.setOnMarkerDragListener(mOnMarkerDragListener);
}
/** 标志拖动监听器 */
OnMarkerDragListener mOnMarkerDragListener = new OnMarkerDragListener() {
/** 标志开始拖动 */
@Override
public void onMarkerDragStart(Marker marker) {
mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
}
/** 标志拖动结束 */
@Override
public void onMarkerDragEnd(Marker marker) {
mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
}
/** 标志正在拖动 */
@Override
public void onMarkerDrag(Marker marker) {
mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
}
};
OnMarkerClickListener mOnMarkerClickListener = new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// 显示一个泡泡
if (pop == null) {
pop = View.inflate(MarkerOverlayActivity.this, R.layout.pop, null);
tv_title = (TextView) pop.findViewById(R.id.tv_title);
mapView.addView(pop, createLayoutParams(marker.getPosition()));
} else {
mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
}
tv_title.setText(marker.getTitle());
return true;
}
};
/** 初始化标志 */
private void initMarker() {
MarkerOptions options = new MarkerOptions();
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.icon_eat);
options.position(mZafu_donghu) // 位置
.title("zafu") // title
.icon(icon) // 图标
.draggable(true); // 设置图标可以拖动
baiduMap.addOverlay(options);
// 添加一个向北的标志
options = new MarkerOptions().icon(icon)
.title("向北")
.position(new LatLng(mZafu_donghu.latitude + 0.001, mZafu_donghu.longitude))
.draggable(true);
baiduMap.addOverlay(options);
// 添加一个向东的标志
options = new MarkerOptions().icon(icon)
.title("向东")
.position(new LatLng(mZafu_donghu.latitude, mZafu_donghu.longitude + 0.001))
.draggable(true);
baiduMap.addOverlay(options);
// 添加一个向西南的标志
options = new MarkerOptions().icon(icon)
.title("向西南")
.position(new LatLng(mZafu_donghu.latitude - 0.001, mZafu_donghu.longitude - 0.001))
.draggable(true);
baiduMap.addOverlay(options);
}
/**
* 创建一个布局参数
* @param position
* @return
*/
private MapViewLayoutParams createLayoutParams(LatLng position) {
MapViewLayoutParams.Builder buidler = new MapViewLayoutParams.Builder();
buidler.layoutMode(ELayoutMode.mapMode); // 指定坐标类型为经纬度
buidler.position(position); // 设置标志的位置
buidler.yOffset(-25); // 设置View往上偏移
MapViewLayoutParams params = buidler.build();
return params;
}