在百度地圖(一)的基礎上,進行的操作
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;
}