日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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百度地图:在地图上绘制点、线、多边形、圆形和文字...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。