Activity:
package com.home;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.baidu.mapapi.map.Geometry;
import com.baidu.mapapi.map.Graphic;
import com.baidu.mapapi.map.GraphicsOverlay;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Symbol;
import com.baidu.mapapi.map.TextItem;
import com.baidu.mapapi.map.TextOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;
/**
* 此demo用来展示如何在地图上用GraphicsOverlay添加点、线、多边形、圆 同时展示如何在地图上用TextOverlay添加文字
*
*/
public class GeometryActivity extends Activity implements OnClickListener {
// 地图相关
private MapView mMapView = null;
private Button resetBtn = null;
private Button clearBtn = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_geometry);
CharSequence titleLable = "自定义绘制功能";
setTitle(titleLable);
// 初始化地图
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.getController().setZoom(12.5f);
mMapView.getController().enableClick(true);
// UI初始化
clearBtn = (Button) findViewById(R.id.btn_clear);
resetBtn = (Button) findViewById(R.id.btn_reset);
clearBtn.setOnClickListener(this);
resetBtn.setOnClickListener(this);
resetBtn.setEnabled(false);
// 界面加载时添加绘制图层
addCustomElementsDemo();
}
@Override
public void onClick(View v) {
if (v == clearBtn) {
clearClick();
clear
Btn.setEnabled(false);
resetBtn.setEnabled(true);
}
if (v == resetBtn) {
resetClick();
clearBtn.setEnabled(true);
resetBtn.setEnabled(false);
}
}
/**
* 清除所有图层
*/
public void clearClick() {
mMapView.getOverlays().clear();
}
/**
* 添加绘制元素
*/
public void resetClick() {
addCustomElementsDemo();
}
/**
* 添加点、线、多边形、圆、文字
*/
public void addCustomElementsDemo() {
GraphicsOverlay graphicsOverlay = new GraphicsOverlay(mMapView);
mMapView.getOverlays().add(graphicsOverlay);
// 添加点
graphicsOverlay.setData(drawPoint());
// 添加折线
graphicsOverlay.setData(drawLine());
// 添加多边形
graphicsOverlay.setData(drawPolygon());
// 添加圆
graphicsOverlay.setData(drawCircle());
// 绘制文字
TextOverlay textOverlay = new TextOverlay(mMapView);
mMapView.getOverlays().add(textOverlay);
textOverlay.addText(drawText());
// 执行地图刷新使生效
mMapView.refresh();
}
/**
* 绘制折线,该折线状态随地图状态变化
*
* @return 折线对象
*/
public Graphic drawLine() {
double mLat = 39.97923;
double mLon = 116.357428;
int lat = (int) (mLat * 1E6);
int lon = (int) (mLon * 1E6);
GeoPoint pt1 = new GeoPoint(lat, lon);
mLat = 39.94923;
mLon = 116.397428;
lat = (int) (mLat * 1E6);
lon = (int) (mLon * 1E6);
GeoPoint pt2 = new GeoPoint(lat, lon);
mLat = 39.97923;
mLon = 116.437428;
lat = (int) (mLat * 1E6);
lon = (int) (mLon * 1E6);
GeoPoint pt3 = new GeoPoint(lat, lon);
// 构建线
Geometry lineGeometry = new Geometry();
// 设定折线点坐标
GeoPoint[] linePoints = new GeoPoint[3];
linePoints[0] = pt1;
linePoints[1] = pt2;
linePoin