Android百度地图绘制多边形,android百度地图:在地图上绘制点、线、多边形、圆形和文字...
首先介紹一個類:GraphicsOverlay
這是一個在地圖上繪制圖形的overlay。GraphicsOverlay通過調用setData(Graphic g) 完成圖形繪制。
Graphic 通過構造方法Graphic(Geometry g, Symbol s) 獲得。Geometry 是幾何圖形,而Symbol是幾何圖形的樣式,
設置線的樣式:setLineSymbol(Symbol.Color color, int width)
設置點的樣式:setPointSymbol(Symbol.Color color)
設置面的樣式:setSurface(Symbol.Color color, int status, int linewidth)
Geometry 就是一個幾何圖形,
繪制圓:setCircle(GeoPoint geoPoint, int radius)
繪制矩形:setEnvelope(GeoPoint geoPoint1, GeoPoint geoPoint2)
繪制點:setPoint(GeoPoint geoPoint, int pixel)
繪制多邊形:setPolygon(GeoPoint[] geoPoints)
繪制線:setPolyLine(GeoPoint[] geoPoints)
2.1.2還新增了Textoverlay,可以在地圖上添加文字。
TextOverlay textOverlay = new TextOverlay(mMapView);
mMapView.getOverlays().add(textOverlay);
textOverlay.addText(drawText()); //drawText()返回的是TextItem 類
具體來看看代碼怎么寫:
繪制線:
/**
* 繪制折線,該折線狀態隨地圖狀態變化
* @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;
linePoints[2] = pt3;
lineGeometry.setPolyLine(linePoints);
//設定樣式
Symbol lineSymbol = new Symbol();
Symbol.Color lineColor = lineSymbol.new Color();
lineColor.red = 255;
lineColor.green = 0;
lineColor.blue = 0;
lineColor.alpha = 255;
lineSymbol.setLineSymbol(lineColor, 10);
//生成Graphic對象
Graphic lineGraphic = new Graphic(lineGeometry, lineSymbol);
return lineGraphic;
}
繪制多邊形:
/**
* 繪制多邊形,該多邊形隨地圖狀態變化
* @return 多邊形對象
*/
public Graphic drawPolygon(){
double mLat = 39.93923;
double mLon = 116.357428;
int lat = (int) (mLat*1E6);
int lon = (int) (mLon*1E6);
GeoPoint pt1 = new GeoPoint(lat, lon);
mLat = 39.91923;
mLon = 116.327428;
lat = (int) (mLat*1E6);
lon = (int) (mLon*1E6);
GeoPoint pt2 = new GeoPoint(lat, lon);
mLat = 39.89923;
mLon = 116.347428;
lat = (int) (mLat*1E6);
lon = (int) (mLon*1E6);
GeoPoint pt3 = new GeoPoint(lat, lon);
mLat = 39.89923;
mLon = 116.367428;
lat = (int) (mLat*1E6);
lon = (int) (mLon*1E6);
GeoPoint pt4 = new GeoPoint(lat, lon);
mLat = 39.91923;
mLon = 116.387428;
lat = (int) (mLat*1E6);
lon = (int) (mLon*1E6);
GeoPoint pt5 = new GeoPoint(lat, lon);
//構建多邊形
Geometry polygonGeometry = new Geometry();
//設置多邊形坐標
GeoPoint[] polygonPoints = new GeoPoint[5];
polygonPoints[0] = pt1;
polygonPoints[1] = pt2;
polygonPoints[2] = pt3;
polygonPoints[3] = pt4;
polygonPoints[4] = pt5;
polygonGeometry.setPolygon(polygonPoints);
//設置多邊形樣式
Symbol polygonSymbol = new Symbol();
Symbol.Color polygonColor = polygonSymbol.new Color();
polygonColor.red = 0;
polygonColor.green = 0;
polygonColor.blue = 255;
polygonColor.alpha = 126;
polygonSymbol.setSurface(polygonColor,1,5);
//生成Graphic對象
Graphic polygonGraphic = new Graphic(polygonGeometry, polygonSymbol);
return polygonGraphic;
}
繪制點:
/**
* 繪制單點,該點狀態不隨地圖狀態變化而變化
* @return 點對象
*/
public Graphic drawPoint(){
double mLat = 39.98923;
double mLon = 116.397428;
int lat = (int) (mLat*1E6);
int lon = (int) (mLon*1E6);
GeoPoint pt1 = new GeoPoint(lat, lon);
//構建點
Geometry pointGeometry = new Geometry();
//設置坐標
pointGeometry.setPoint(pt1, 10);
//設定樣式
Symbol pointSymbol = new Symbol();
Symbol.Color pointColor = pointSymbol.new Color();
pointColor.red = 0;
pointColor.green = 126;
pointColor.blue = 255;
pointColor.alpha = 255;
pointSymbol.setPointSymbol(pointColor);
//生成Graphic對象
Graphic pointGraphic = new Graphic(pointGeometry, pointSymbol);
return pointGraphic;
}繪制圓:
/**
* 繪制圓,該圓隨地圖狀態變化
* @return 圓對象
*/
public Graphic drawCircle() {
double mLat = 39.90923;
double mLon = 116.447428;
int lat = (int) (mLat*1E6);
int lon = (int) (mLon*1E6);
GeoPoint pt1 = new GeoPoint(lat, lon);
//構建圓
Geometry circleGeometry = new Geometry();
//設置圓中心點坐標和半徑
circleGeometry.setCircle(pt1, 2500);
//設置樣式
Symbol circleSymbol = new Symbol();
Symbol.Color circleColor = circleSymbol.new Color();
circleColor.red = 0;
circleColor.green = 255;
circleColor.blue = 0;
circleColor.alpha = 126;
circleSymbol.setSurface(circleColor,1,3);
//生成Graphic對象
Graphic circleGraphic = new Graphic(circleGeometry, circleSymbol);
return circleGraphic;
}繪制文字
/**
* 繪制文字,該文字隨地圖變化有透視效果
* @return 文字對象
*/
public TextItem drawText(){
double mLat = 39.86923;
double mLon = 116.397428;
int lat = (int) (mLat*1E6);
int lon = (int) (mLon*1E6);
//構建文字
TextItem item = new TextItem();
//設置文字位置
item.pt = new GeoPoint(lat,lon);
//設置文件內容
item.text = "百度地圖SDK";
//設文字大小
item.fontSize = 40;
Symbol symbol = new Symbol();
Symbol.Color bgColor = symbol.new Color();
//設置文字背景色
bgColor.red = 0;
bgColor.blue = 0;
bgColor.green = 255;
bgColor.alpha = 50;
Symbol.Color fontColor = symbol.new Color();
//設置文字著色
fontColor.alpha = 255;
fontColor.red = 0;
fontColor.green = 0;
fontColor.blue = 255;
//設置對齊方式
item.align = TextItem.ALIGN_CENTER;
//設置文字顏色和背景顏色
item.fontColor = fontColor;
item.bgColor = bgColor ;
return item;
}添加到圖層,顯示在地圖上:
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();
清除所有圖層:
mMapView.getOverlays().clear();
總結
以上是生活随笔為你收集整理的Android百度地图绘制多边形,android百度地图:在地图上绘制点、线、多边形、圆形和文字...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首次超越人类!“读图会意”这件事,AI比
- 下一篇: android sina oauth2.