android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...
轉載自:http://blog.csdn.net/rt77777/article/details/9186691
首先介紹一個類: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,可以在地圖上添加文字。
[java]?view plaincopyTextOverlay?textOverlay?=newTextOverlay(mMapView);
mMapView.getOverlays().add(textOverlay);
textOverlay.addText(drawText());?//drawText()返回的是TextItem?類
具體來看看代碼怎么寫:
繪制線:
[java]?view plaincopy/**
*?繪制折線,該折線狀態隨地圖狀態變化
*?@return?折線對象
*/
publicGraphic?drawLine(){
doublemLat?=39.97923;
doublemLon?=116.357428;
intlat?=?(int)?(mLat*1E6);
intlon?=?(int)?(mLon*1E6);
GeoPoint?pt1?=?newGeoPoint(lat,?lon);
mLat?=?39.94923;
mLon?=?116.397428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt2?=?newGeoPoint(lat,?lon);
mLat?=?39.97923;
mLon?=?116.437428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt3?=?newGeoPoint(lat,?lon);
//構建線
Geometry?lineGeometry?=?newGeometry();
//設定折線點坐標
GeoPoint[]?linePoints?=?newGeoPoint[3];
linePoints[0]?=?pt1;
linePoints[1]?=?pt2;
linePoints[2]?=?pt3;
lineGeometry.setPolyLine(linePoints);
//設定樣式
Symbol?lineSymbol?=?newSymbol();
Symbol.Color?lineColor?=?lineSymbol.newColor();
lineColor.red?=?255;
lineColor.green?=?0;
lineColor.blue?=?0;
lineColor.alpha?=?255;
lineSymbol.setLineSymbol(lineColor,?10);
//生成Graphic對象
Graphic?lineGraphic?=?newGraphic(lineGeometry,?lineSymbol);
returnlineGraphic;
}繪制多邊形:
[java]?view plaincopy/**
*?繪制多邊形,該多邊形隨地圖狀態變化
*?@return?多邊形對象
*/
publicGraphic?drawPolygon(){
doublemLat?=39.93923;
doublemLon?=116.357428;
intlat?=?(int)?(mLat*1E6);
intlon?=?(int)?(mLon*1E6);
GeoPoint?pt1?=?newGeoPoint(lat,?lon);
mLat?=?39.91923;
mLon?=?116.327428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt2?=?newGeoPoint(lat,?lon);
mLat?=?39.89923;
mLon?=?116.347428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt3?=?newGeoPoint(lat,?lon);
mLat?=?39.89923;
mLon?=?116.367428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt4?=?newGeoPoint(lat,?lon);
mLat?=?39.91923;
mLon?=?116.387428;
lat?=?(int)?(mLat*1E6);
lon?=?(int)?(mLon*1E6);
GeoPoint?pt5?=?newGeoPoint(lat,?lon);
//構建多邊形
Geometry?polygonGeometry?=?newGeometry();
//設置多邊形坐標
GeoPoint[]?polygonPoints?=?newGeoPoint[5];
polygonPoints[0]?=?pt1;
polygonPoints[1]?=?pt2;
polygonPoints[2]?=?pt3;
polygonPoints[3]?=?pt4;
polygonPoints[4]?=?pt5;
polygonGeometry.setPolygon(polygonPoints);
//設置多邊形樣式
Symbol?polygonSymbol?=?newSymbol();
Symbol.Color?polygonColor?=?polygonSymbol.newColor();
polygonColor.red?=?0;
polygonColor.green?=?0;
polygonColor.blue?=?255;
polygonColor.alpha?=?126;
polygonSymbol.setSurface(polygonColor,1,5);
//生成Graphic對象
Graphic?polygonGraphic?=?newGraphic(polygonGeometry,?polygonSymbol);
returnpolygonGraphic;
}繪制點:
[java]?view plaincopy/**
*?繪制單點,該點狀態不隨地圖狀態變化而變化
*?@return?點對象
*/
publicGraphic?drawPoint(){
doublemLat?=39.98923;
doublemLon?=116.397428;
intlat?=?(int)?(mLat*1E6);
intlon?=?(int)?(mLon*1E6);
GeoPoint?pt1?=?newGeoPoint(lat,?lon);
//構建點
Geometry?pointGeometry?=?newGeometry();
//設置坐標
pointGeometry.setPoint(pt1,?10);
//設定樣式
Symbol?pointSymbol?=?newSymbol();
Symbol.Color?pointColor?=?pointSymbol.newColor();
pointColor.red?=?0;
pointColor.green?=?126;
pointColor.blue?=?255;
pointColor.alpha?=?255;
pointSymbol.setPointSymbol(pointColor);
//生成Graphic對象
Graphic?pointGraphic?=?newGraphic(pointGeometry,?pointSymbol);
returnpointGraphic;
}繪制圓:
[java]?view plaincopy/**
*?繪制圓,該圓隨地圖狀態變化
*?@return?圓對象
*/
publicGraphic?drawCircle()?{
doublemLat?=39.90923;
doublemLon?=116.447428;
intlat?=?(int)?(mLat*1E6);
intlon?=?(int)?(mLon*1E6);
GeoPoint?pt1?=?newGeoPoint(lat,?lon);
//構建圓
Geometry?circleGeometry?=?newGeometry();
//設置圓中心點坐標和半徑
circleGeometry.setCircle(pt1,?2500);
//設置樣式
Symbol?circleSymbol?=?newSymbol();
Symbol.Color?circleColor?=?circleSymbol.newColor();
circleColor.red?=?0;
circleColor.green?=?255;
circleColor.blue?=?0;
circleColor.alpha?=?126;
circleSymbol.setSurface(circleColor,1,3);
//生成Graphic對象
Graphic?circleGraphic?=?newGraphic(circleGeometry,?circleSymbol);
returncircleGraphic;
}繪制文字
[java]?view plaincopy/**
*?繪制文字,該文字隨地圖變化有透視效果
*?@return?文字對象
*/
publicTextItem?drawText(){
doublemLat?=39.86923;
doublemLon?=116.397428;
intlat?=?(int)?(mLat*1E6);
intlon?=?(int)?(mLon*1E6);
//構建文字
TextItem?item?=?newTextItem();
//設置文字位置
item.pt?=?newGeoPoint(lat,lon);
//設置文件內容
item.text?=?"百度地圖SDK";
//設文字大小
item.fontSize?=?40;
Symbol?symbol?=?newSymbol();
Symbol.Color?bgColor?=?symbol.newColor();
//設置文字背景色
bgColor.red?=?0;
bgColor.blue?=?0;
bgColor.green?=?255;
bgColor.alpha?=?50;
Symbol.Color?fontColor?=?symbol.newColor();
//設置文字著色
fontColor.alpha?=?255;
fontColor.red?=?0;
fontColor.green?=?0;
fontColor.blue??=?255;
//設置對齊方式
item.align?=?TextItem.ALIGN_CENTER;
//設置文字顏色和背景顏色
item.fontColor?=?fontColor;
item.bgColor??=?bgColor?;
returnitem;
}添加到圖層,顯示在地圖上:
[java]?view plaincopyGraphicsOverlay?graphicsOverlay?=newGraphicsOverlay(mMapView);
mMapView.getOverlays().add(graphicsOverlay);
//添加點
graphicsOverlay.setData(drawPoint());
//添加折線
graphicsOverlay.setData(drawLine());
//添加多邊形
graphicsOverlay.setData(drawPolygon());
//添加圓
graphicsOverlay.setData(drawCircle());
//繪制文字
TextOverlay?textOverlay?=?newTextOverlay(mMapView);
mMapView.getOverlays().add(textOverlay);
textOverlay.addText(drawText());
//執行地圖刷新使生效
mMapView.refresh();清除所有圖層:
[java]?view plaincopymMapView.getOverlays().clear();
0 0
總結
以上是生活随笔為你收集整理的android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有没有关于教育技术学的论文选题参考?
- 下一篇: stm32mp157开发板常用系统工具使