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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

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