前言
在地圖應(yīng)用中,Overlay
(覆蓋層)是指在地圖圖層之上疊加顯示的額外信息層缩抡。這些覆蓋層可以用來展示各種數(shù)據(jù)隧膏,如交通狀況哗讥、用戶位置、興趣點(diǎn)(POI)等胞枕。在百度地圖SDK中杆煞,可以使用多種類型的覆蓋層來增強(qiáng)地圖的功能和視覺效果。文本介紹簡單的點(diǎn)線面和文本覆蓋物使用方法和屬性腐泻。
地圖類中覆蓋物的接口
-
BaiduMap
類中添加和刪除Overlay
的接口:
類型 |
方法 |
說明 |
Overlay |
addOverlay (OverlayOptions options) |
向地圖添加一個(gè) Overlay |
java.util.List< Overlay > |
addOverlays (List< OverlayOptions > options) |
向地圖添加多個(gè) Overlay |
void |
clear () |
清空地圖所有的 Overlay 覆蓋物以及 InfoWindow |
void |
removeOverLays (List< Overlay > overlays) |
批量刪除添加的多個(gè) Overlay |
覆蓋物類
類型 |
說明 |
覆蓋物類 |
選項(xiàng) |
點(diǎn) |
定義地圖 Marker 覆蓋物 |
Marker |
MarkerOptions |
折線 |
定義地圖折線覆蓋物 |
Polyline |
PolylineOptions |
多邊形 |
定義地圖中繪制多邊形 |
Polygon |
PolygonOptions |
弧線 |
定義了在地圖上繪制弧線的類决乎。三點(diǎn)坐標(biāo)確定一條弧線 |
Arc |
ArcOptions |
圓 |
定義在地圖上畫一個(gè)圓的類 |
Circle |
CircleOptions |
文本 |
定義在地圖中繪制的文字覆蓋物 |
Text |
TextOptions |
Marker示例
// 定義Maker坐標(biāo)點(diǎn)
LatLng point = new LatLng(39.963175, 116.400244);
// 構(gòu)建Marker圖標(biāo)
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.icon_mark_a);
// 構(gòu)建MarkerOption,用于在地圖上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
// 在地圖上添加Marker派桩,并顯示
Marker marker = (Marker) map.addOverlay(option);
Polyline示例
// 構(gòu)建折線點(diǎn)坐標(biāo)
LatLng p1 = new LatLng(39.97923, 116.357428);
LatLng p2 = new LatLng(39.94923, 116.397428);
LatLng p3 = new LatLng(39.97923, 116.437428);
List<LatLng> points = new ArrayList<LatLng>();
points.add(p1);
points.add(p2);
points.add(p3);
// 設(shè)置折線的屬性
OverlayOptions polylineOptions = new PolylineOptions()
.width(10)
.color(0xAA00FF00)
.points(points);
// 在地圖上繪制折線
Polyline polyline = (Polyline) map.addOverlay(polylineOptions);
Polygon示例
// 多邊形頂點(diǎn)位置
List<LatLng> points = new ArrayList<>();
points.add(new LatLng(39.93923, 116.357428));
points.add(new LatLng(39.91923, 116.327428));
points.add(new LatLng(39.89923, 116.347428));
points.add(new LatLng(39.89923, 116.367428));
points.add(new LatLng(39.91923, 116.387428));
// 構(gòu)造PolygonOptions
PolygonOptions polygonOptions = new PolygonOptions()
.points(points)
.fillColor(0xAAFFFF00) // 填充顏色
.stroke(new Stroke(5, 0xAA00FF00)); // 邊框?qū)挾群皖伾?
// 在地圖上顯示多邊形
Polygon polygon = (Polygon) map.addOverlay(polygonOptions);
Arc示例
// 添加弧線坐標(biāo)數(shù)據(jù)
LatLng p1 = new LatLng(39.97923, 116.357428); // 起點(diǎn)
LatLng p2 = new LatLng(40.00923, 116.397428); // 中間點(diǎn)
LatLng p3 = new LatLng(39.97923, 116.437428); // 終點(diǎn)
// 構(gòu)造ArcOptions對(duì)象
OverlayOptions arcOptions = new ArcOptions()
.color(Color.RED)
.width(10)
.points(p1, p2, p3);
// 在地圖上顯示弧線
Arc arc = (Arc) map.addOverlay(arcOptions);
Circle示例
// 圓心位置
LatLng center = new LatLng(39.90923, 116.447428);
// 構(gòu)造CircleOptions對(duì)象
CircleOptions circleOptions = new CircleOptions()
.center(center)
.radius(1400)
.fillColor(0xAAFFFF00) // 填充顏色
.stroke(new Stroke(5, 0xAA00ff00)); // 邊框?qū)捄瓦吙蝾伾?
// 在地圖上顯示圓
Circle circle = (Circle) map.addOverlay(circleOptions);
Text示例
// 文字覆蓋物位置坐標(biāo)
LatLng llText = new LatLng(39.86923, 116.397428);
// 構(gòu)建TextOptions對(duì)象
OverlayOptions textOptions = new TextOptions()
.text("百度地圖SDK") // 文字內(nèi)容
.bgColor(0xAAFFFF00) // 背景色
.fontSize(28) // 字號(hào)
.fontColor(0xFFFF0000) // 文字顏色
.rotate(0) // 旋轉(zhuǎn)角度
.position(llText);
// 在地圖上顯示文字覆蓋物
Text text = (Text) map.addOverlay(textOptions);
效果圖
Marker的更多屬性
常用屬性
類型 |
方法 |
說明 |
MarkerOptions |
icon (BitmapDescriptor icon) |
設(shè)置 Marker 覆蓋物的圖標(biāo)构诚,相同圖案的 icon 的 marker 最好使用同一個(gè) BitmapDescriptor 對(duì)象以節(jié)省內(nèi)存空間。 |
MarkerOptions |
position (LatLng position) |
設(shè)置 marker 覆蓋物的位置坐標(biāo) |
MarkerOptions |
alpha (float alpha) |
設(shè)置 Marker 覆蓋物圖標(biāo)的透明度铆惑,取值為[0,1]范嘱,默認(rèn)1.0,若超出范圍則默認(rèn)為1.0 |
MarkerOptions |
perspective (boolean perspective) |
設(shè)置是否開啟 marker 覆蓋物近大遠(yuǎn)小效果员魏,默認(rèn)開啟 |
MarkerOptions |
flat (boolean flat) |
設(shè)置 marker設(shè)置 是否平貼地圖 |
MarkerOptions |
anchor (float anchorX, float anchorY) |
繪制方式升級(jí)為overlay2.0后丑蛤,該接口不生效,替換接口:setLocate 設(shè)置 marker 覆蓋物的錨點(diǎn)比例撕阎,默認(rèn)(0.5f, 1.0f)水平居中受裹,垂直下對(duì)齊 |
MarkerOptions |
setLocate (int locate) |
v7.6.0新增接口 設(shè)置marker 覆蓋物的錨點(diǎn)位置 繪制方式升級(jí)為overlay2.0后,使用該方法替換anchor |
MarkerOptions |
rotate (float rotate) |
設(shè)置 marker 覆蓋物旋轉(zhuǎn)角度虏束,逆時(shí)針 |
MarkerOptions |
visible (boolean visible) |
設(shè)置 marker 覆蓋物的可見性 |
MarkerOptions |
extraInfo (Bundle extraInfo) |
設(shè)置 marker 覆蓋物的額外信息 |
交互
- 啟用可點(diǎn)擊時(shí)棉饶,在點(diǎn)擊
Marker
時(shí),會(huì)回調(diào)BaiduMap.OnMarkerClickListener
镇匀。
- 啟用允許拖拽時(shí)照藻,在拖拽
Marker
時(shí),會(huì)回調(diào)BaiduMap.OnMarkerDragListener
坑律。
類型 |
方法 |
說明 |
MarkerOptions |
clickable (boolean isClickable) |
設(shè)置Marker是否可點(diǎn)擊 |
MarkerOptions |
draggable (boolean draggable) |
設(shè)置 marker 是否允許拖拽岩梳,默認(rèn)不可拖拽 |
碰撞
- 自 7.5.0 起地圖SDK支持marker碰撞策略功能,并兼容之前的marker繪制功能晃择,只有打開isJoinCollision開關(guān)才進(jìn)行碰撞策略冀值。
marker碰撞策略可檢測屏幕中海量marker的碰撞情況,并自動(dòng)更新marker狀態(tài)宫屠,確保屏幕中的marker互不碰撞列疗。
- 自v7.5.7起,百度地圖SDK支持Marker及其title可碰撞地圖poi浪蹂。
類型 |
方法 |
說明 |
MarkerOptions |
isJoinCollision (boolean isJoinCollision) |
是否參與碰撞抵栈,默認(rèn)值為false |
MarkerOptions |
isForceDisPlay (boolean display) |
參與碰撞后是否強(qiáng)制展示告材,默認(rèn)值為false |
MarkerOptions |
priority (int priority) |
設(shè)置marker碰撞時(shí)的顯示優(yōu)先級(jí),默認(rèn)值為整型的最大值 |
MarkerOptions |
startLevel (int startLevel) |
最小展示層級(jí)古劲,默認(rèn)值為4 |
MarkerOptions |
endLevel (int endLevel) |
最大展示層級(jí)斥赋,室內(nèi)默認(rèn)22,室外默認(rèn)21 |
MarkerOptions |
poiCollided (boolean isCollied) |
設(shè)置是否碰撞底圖POI |
動(dòng)畫
- 自v3.3.0版本起产艾,SDK提供了給Marker增加幀動(dòng)畫的功能疤剑,通過MarkerOptions類來設(shè)置,一次傳入一個(gè)Icon列表闷堡,通過period設(shè)定刷新的幀間隔隘膘。
- 自v3.6.0版本起,SDK提供了加載Marker時(shí)的動(dòng)畫效果杠览,有如下四種效果供開發(fā)者選擇弯菊。
- 除了可以自定義的幀動(dòng)畫,Marker還支持設(shè)置旋轉(zhuǎn)踱阿、縮放管钳、平移、透明扫茅、和組合動(dòng)畫效果蹋嵌。通過Marker類setAnimation方法設(shè)置育瓜。
類型 |
方法 |
說明 |
MarkerOptions |
icons (ArrayList< BitmapDescriptor > icons) |
設(shè)置 Marker 覆蓋物的圖標(biāo)葫隙,相同圖案的 icon 的 marker 最好使用同一個(gè) BitmapDescriptor 對(duì)象以節(jié)省內(nèi)存空間。 |
MarkerOptions |
period (int period) |
設(shè)置多少幀刷新一次圖片資源躏仇,Marker動(dòng)畫的間隔時(shí)間恋脚,值越小動(dòng)畫越快 |
MarkerOptions |
interval (int mInterval) |
v7.6.0新增接口 設(shè)置marker多幀圖片播放時(shí)間間隔(ms) 地圖繪制方式升級(jí)為overlay2.0時(shí),該接口生效 |
MarkerOptions |
animateType (MarkerOptions.MarkerAnimateType type) |
設(shè)置marker動(dòng)畫類型焰手,見 MarkerAnimateType(從天上掉下糟描,從地下生長,跳躍)书妻,默認(rèn)無動(dòng)畫 |
其它屬性
類型 |
方法 |
說明 |
MarkerOptions |
height (int height) |
設(shè)置3D marker的高度值 |
MarkerOptions |
fixedScreenPosition (Point point) |
|
MarkerOptions |
infoWindow (InfoWindow infoWindow) |
設(shè)置 Marker 綁定的InfoWindow |
MarkerOptions |
richView (RichView richView) |
v7.6.0 新增接口 添加marker上方的ui |
MarkerOptions |
scaleX (float scaleX) |
設(shè)置 Marker 覆蓋物X方向縮放 |
MarkerOptions |
scaleY (float scaleY) |
設(shè)置 Marker 覆蓋物X方向縮放 |
MarkerOptions |
setDrawableResource (BmDrawableResource resource) |
|
MarkerOptions |
xOffset (int xOffset) |
設(shè)置Marker坐標(biāo)的X偏移量 |
MarkerOptions |
yOffset (int yOffset) |
設(shè)置Marker坐標(biāo)的Y偏移量 |
MarkerOptions |
zIndex (int zIndex) |
設(shè)置 marker 覆蓋物的 zIndex |
折線的更多屬性
常用屬性
類型 |
方法 |
說明 |
PolylineOptions |
width (int width) |
設(shè)置折線線寬船响, 默認(rèn)為 5, 單位:像素 需要注意的是:Polyline的寬度適配地圖當(dāng)前縮放級(jí)別下的像素與地理范圍的對(duì)應(yīng)關(guān)系 |
PolylineOptions |
color (int color) |
設(shè)置折線顏色 |
PolylineOptions |
points (List< LatLng > points) |
設(shè)置折線坐標(biāo)點(diǎn)列表 |
PolylineOptions |
colorsValues (List< Integer > colors) |
設(shè)置折線每個(gè)點(diǎn)的顏色值躲履,每一個(gè)點(diǎn)帶一個(gè)顏色值见间,繪制時(shí)按照索引依次取值 顏色個(gè)數(shù) >= points的個(gè)數(shù),若colors越界大于點(diǎn)個(gè)數(shù)工猜,則取最后一個(gè)顏色繪制 注意顏色值得格式為:0xAARRGGBB米诉,透明度值在前 |
PolylineOptions |
customTexture (BitmapDescriptor customTexture) |
設(shè)置自定義紋理 |
PolylineOptions |
customTextureList (List< BitmapDescriptor > customTextureList) |
設(shè)置折線多紋理分段繪制的紋理隊(duì)列 |
PolylineOptions |
textureIndex (List< Integer indexList) |
設(shè)置折線每個(gè)點(diǎn)的紋理索引 每一個(gè)點(diǎn)帶一個(gè)索引,List中的值代表customTextureList(List<com.baidu.mapapi.map.BitmapDescriptor>)中紋理圖片所在的索引(下標(biāo))篷帅, 繪制時(shí)按照索引從customTextureList里面取史侣。 |
PolylineOptions |
visible (boolean visible) |
設(shè)置折線可見性 |
PolylineOptions |
extraInfo (Bundle extraInfo) |
設(shè)置折線額外信息 |
PolylineOptions |
dottedLine (boolean dottedLine) |
設(shè)置折線是否虛線 |
PolylineOptions |
dottedLineType (PolylineDottedLineType polylineDottedLineType) |
設(shè)置Polyline的虛線類型 |
交互
類型 |
方法 |
說明 |
PolylineOptions |
clickable (boolean isClickable) |
設(shè)置Polyline是否可點(diǎn)擊 |
其它
類型 |
方法 |
說明 |
PolylineOptions |
isGeodesic (boolean isGeodesic) |
設(shè)置是否繪制為大地曲線 |
PolylineOptions |
isGradient (boolean isGradient) |
設(shè)置是否繪制為漸變色 |
PolylineOptions |
bloomType (PolylineOptions.LineBloomType lineBloomType) |
添加發(fā)光效果 默認(rèn)不發(fā)光 |
PolylineOptions |
bloomWidth (int width) |
設(shè)置發(fā)光下的線段寬度拴泌,寬度 >0 默認(rèn)普通線寬 * 2 |
PolylineOptions |
bloomAlpha (int alpha) |
設(shè)置發(fā)光下線段透明度(0~255) 默認(rèn)線段透明度 255 |
PolylineOptions |
setBloomGradientASpeed (float speed) |
設(shè)置透明度漸變發(fā)光效果的漸變速率(1.0 ~ 10.0)默認(rèn)5.0f |
PolylineOptions |
setBloomBlurTimes (int times) |
設(shè)置模糊發(fā)光效果的模糊次數(shù)(1~10) 默認(rèn)1次 |
類型 |
方法 |
說明 |
PolylineOptions |
focus (boolean focus) |
|
PolylineOptions |
isThined (boolean isThined) |
設(shè)置是否需要對(duì)Polyline的坐標(biāo)數(shù)據(jù)進(jìn)行抽稀 , 默認(rèn)抽稀 |
PolylineOptions |
keepScale (boolean isKeep) |
設(shè)置紋理寬、高是否保持原比例渲染 默認(rèn)為false |
PolylineOptions |
lineCapType (PolylineOptions.LineCapType lineCapType) |
設(shè)置Polyline頭尾形狀類型 |
PolylineOptions |
lineDirectionCross180 (PolylineOptions.LineDirectionCross180 lineDirectionCross180) |
設(shè)置Polyline跨越180度的方向惊橱。 |
PolylineOptions |
lineJoinType (PolylineOptions.LineJoinType lineJoinType) |
設(shè)置Polyline拐點(diǎn)銜接的形狀類型 |
PolylineOptions |
zIndex (int zIndex) |
設(shè)置折線的疊壓順序蚪腐,按照值升序疊壓 |
多邊形的更多屬性
常用屬性
類型 |
方法 |
說明 |
PolygonOptions |
stroke (Stroke stroke) |
設(shè)置多邊形邊框信息 |
PolygonOptions |
dottedStroke (boolean dottedStroke) |
設(shè)置是否繪制虛線邊框 |
PolygonOptions |
dottedStrokeType (PolylineDottedLineType polylineDottedStrokeType) |
設(shè)置Polygon的虛線Stroke類型 |
PolygonOptions |
fillColor (int color) |
設(shè)置多邊形填充顏色 |
PolygonOptions |
points (List< LatLng > points) |
設(shè)置多邊形坐標(biāo)點(diǎn)列表 |
交互
類型 |
方法 |
說明 |
PolygonOptions |
setClickable (boolean isClickable) |
設(shè)置Polygon是否可點(diǎn)擊 |
其它
類型 |
方法 |
說明 |
PolygonOptions |
addHoleOption (HoleOptions holeOption) |
設(shè)置Polygon的鏤空形狀選項(xiàng) |
PolygonOptions |
addHoleOptions (List< HoleOptions > holeOptions) |
設(shè)置Polygon的鏤空形狀列表 |
PolygonOptions |
extraInfo (Bundle extraInfo) |
設(shè)置多邊形額外信息 |
PolygonOptions |
visible (boolean visible) |
設(shè)置多邊形可見性 |
PolygonOptions |
zIndex (int zIndex) |
設(shè)置多邊形 zIndex |
PolygonOptions |
points (String encodedPoints, EncodePointType type) |
設(shè)置加密后的位置信息,解密類型 |
Arc的更多屬性
類型 |
方法 |
說明 |
ArcOptions |
color (int color) |
設(shè)置弧線的顏色 |
ArcOptions |
width (int width) |
設(shè)置弧線的線寬 |
ArcOptions |
points (LatLng start, LatLng middle, LatLng end) |
設(shè)置弧線的起點(diǎn)税朴、中點(diǎn)削茁、終點(diǎn)坐標(biāo) |
ArcOptions |
extraInfo (Bundle extraInfo) |
設(shè)置弧線的額外信息 |
ArcOptions |
setClickable (boolean isClickable) |
設(shè)置Arc是否可點(diǎn)擊 |
ArcOptions |
visible (boolean visible) |
設(shè)置弧線是否可見 |
ArcOptions |
zIndex (int zIndex) |
設(shè)置弧線的 zIndex |
Circle的更多屬性
類型 |
方法 |
說明 |
CircleOptions |
radius (int radius) |
設(shè)置圓半徑 |
CircleOptions |
fillColor (int color) |
設(shè)置圓填充顏色 |
CircleOptions |
stroke (Stroke stroke) |
設(shè)置圓邊框信息 |
CircleOptions |
dottedStroke (boolean dottedStroke) |
設(shè)置是否繪制虛線圓邊框 |
CircleOptions |
dottedStrokeType (CircleDottedStrokeType circleDottedStrokeType) |
設(shè)置Circle的虛線Stroke類型 |
CircleOptions |
center (LatLng center) |
設(shè)置圓心坐標(biāo) |
CircleOptions |
setIsGradientCircle (boolean isGradientCircle) |
設(shè)置是否為漸變圓 true 需要 ,false 不需要 如設(shè)置true 漸變規(guī)則如下: (0 ~ radiusWeight * radius) 該部分顏色從 centerColor 漸變至 colorWeight * (sideColor - centerColor)掉房; (radiusWeight * radius ~ radius)該部分間顏色從 colorWeight * (sideColor - centerColor) 漸變至 sideColor茧跋; 注意:漸變圓不支持鏤空及fillColor |
CircleOptions |
setSideColor (int sideColor) |
設(shè)置邊緣顏色 |
CircleOptions |
setCenterColor (int centerColor) |
設(shè)置中心顏色 |
CircleOptions |
addHoleOption (HoleOptions holeOption) |
設(shè)置Circle的鏤空形狀選項(xiàng) |
CircleOptions |
addHoleOptions (List< HoleOptions > holeOptions) |
設(shè)置Circle的鏤空形狀列表 |
CircleOptions |
extraInfo (Bundle extraInfo) |
設(shè)置圓額外信息 |
CircleOptions |
setClickable (boolean isClickable) |
設(shè)置Circle是否可點(diǎn)擊 |
CircleOptions |
setColorWeight (float colorWeight) |
設(shè)置顏色權(quán)重 |
CircleOptions |
setRadiusWeight (float radiusWeight) |
設(shè)置半徑權(quán)重 |
CircleOptions |
visible (boolean visible) |
設(shè)置圓是否可見 |
CircleOptions |
zIndex (int zIndex) |
設(shè)置圓 zIndex 信息 |
Text的更多屬性
類型 |
方法 |
說明 |
TextOptions |
text (String text) |
設(shè)置文字覆蓋物的文字內(nèi)容 |
TextOptions |
bgColor (int bgColor) |
設(shè)置文字覆蓋物背景顏色 |
TextOptions |
fontSize (int size) |
設(shè)置文字覆蓋物字體大小 |
TextOptions |
fontColor (int color) |
設(shè)置文字覆蓋物字體顏色,默認(rèn)黑色 |
TextOptions |
rotate (float rotate) |
設(shè)置文字覆蓋物旋轉(zhuǎn)角度卓囚,逆時(shí)針 |
TextOptions |
position (LatLng position) |
設(shè)置文字覆蓋物地理坐標(biāo) |
TextOptions |
setClickable (boolean isClickable) |
設(shè)置Text是否可點(diǎn)擊 |
TextOptions |
align (int alignX, int alignY) |
設(shè)置文字覆蓋物對(duì)齊方式瘾杭,默認(rèn)居中對(duì)齊 v7.6.0后,若升級(jí)地圖繪制方式為overlay2.0哪亿,該接口無效粥烁,替換接口為setLocate |
TextOptions |
setLocate (int locate) |
v7.6.0新增接口 設(shè)置文字覆蓋物對(duì)齊方式, 默認(rèn)居中 |
TextOptions |
typeface (Typeface typeface) |
設(shè)置文字覆蓋物字體 升級(jí)地圖繪制方式為overlay2.0后蝇棉,該方法無效讨阻,替換方法為typeFaceType |
TextOptions |
typeFaceType (int typeface) |
v7.6.0新增接口 升級(jí)地圖繪制方式為overlay2.0后,該方法生效 |
TextOptions |
bgBitmapDescriptor (BitmapDescriptor bitmapDescriptor) |
設(shè)置text背景圖片 7.6.0新增接口 繪制方式升級(jí)為overlay2.0時(shí)篡殷,必須設(shè)置該接口才可以設(shè)置text背景顏色 |
TextOptions |
extraInfo (Bundle extraInfo) |
設(shè)置文字覆蓋物額外信息 |
TextOptions |
visible (boolean visible) |
設(shè)置文字覆蓋物可見性 |
TextOptions |
zIndex (int zIndex) |
設(shè)置文字覆蓋物 zIndex |