百度地图SDK Android版开发 6 显示覆盖物
前言 地图类中覆盖物的接口 覆盖物类 Marker示例 Polyline示例 Polygon示例 Arc示例 Circle示例 Text示例 效果图
Marker的更多属性
折线的更多属性
多边形的更多属性
Arc的更多属性 Circle的更多属性 Text的更多属性
前言
在地图应用中,Overlay
(覆盖层)是指在地图图层之上叠加显示的额外信息层。这些覆盖层可以用来展示各种数据,如交通状况、用户位置、兴趣点(POI)等。在百度地图SDK中,可以使用多种类型的覆盖层来增强地图的功能和视觉效果。文本介绍简单的点线面和文本覆盖物使用方法和属性。
地图类中覆盖物的接口
BaiduMap
类中添加和删除Overlay
的接口:
类型 方法 说明 Overlay addOverlay
(OverlayOptions options)向地图添加一个 Overlay java.util.List< Overlay > addOverlays
(List< OverlayOptions > options)向地图添加多个 Overlay void clear
()清空地图所有的 Overlay 覆盖物以及 InfoWindow void removeOverLays
(List< Overlay > overlays)批量删除添加的多个 Overlay
覆盖物类
类型 说明 覆盖物类 选项 点 定义地图 Marker 覆盖物 Marker
MarkerOptions
折线 定义地图折线覆盖物 Polyline
PolylineOptions
多边形 定义地图中绘制多边形 Polygon
PolygonOptions
弧线 定义了在地图上绘制弧线的类。三点坐标确定一条弧线 Arc
ArcOptions
圆 定义在地图上画一个圆的类 Circle
CircleOptions
文本 定义在地图中绘制的文字覆盖物 Text
TextOptions
Marker示例
LatLng point = new LatLng ( 39.963175 , 116.400244 ) ;
BitmapDescriptor bitmap = BitmapDescriptorFactory
. fromResource ( R . drawable. icon_mark_a) ;
OverlayOptions option = new MarkerOptions ( )
. position ( point)
. icon ( bitmap) ;
Marker marker = ( Marker ) map. addOverlay ( option) ;
Polyline示例
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) ;
OverlayOptions polylineOptions = new PolylineOptions ( )
. width ( 10 )
. color ( 0xAA00FF00 )
. points ( points) ;
Polyline polyline = ( Polyline ) map. addOverlay ( polylineOptions) ;
Polygon示例
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 ) ) ;
PolygonOptions polygonOptions = new PolygonOptions ( )
. points ( points)
. fillColor ( 0xAAFFFF00 )
. stroke ( new Stroke ( 5 , 0xAA00FF00 ) ) ;
Polygon polygon = ( Polygon ) map. addOverlay ( polygonOptions) ;
Arc示例
LatLng p1 = new LatLng ( 39.97923 , 116.357428 ) ;
LatLng p2 = new LatLng ( 40.00923 , 116.397428 ) ;
LatLng p3 = new LatLng ( 39.97923 , 116.437428 ) ;
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 ) ;
CircleOptions mCircleOptions = new CircleOptions ( ) . center ( center)
. radius ( 1400 )
. fillColor ( 0xAAFFFF00 )
. stroke ( new Stroke ( 5 , 0xAA00ff00 ) ) ;
Circle circle = ( Circle ) map. addOverlay ( mCircleOptions) ;
overlays. add ( circle) ;
Text示例
LatLng llText = new LatLng ( 39.86923 , 116.397428 ) ;
OverlayOptions textOptions = new TextOptions ( )
. text ( "百度地图SDK" )
. bgColor ( 0xAAFFFF00 )
. fontSize ( 28 )
. fontColor ( 0xFFFF0000 )
. rotate ( 0 )
. position ( llText) ;
Text text = ( Text ) map. addOverlay ( textOptions) ;
效果图
Marker的更多属性
常用属性
类型 方法 说明 MarkerOptions icon
(BitmapDescriptor icon)设置 Marker 覆盖物的图标,相同图案的 icon 的 marker 最好使用同一个 BitmapDescriptor 对象以节省内存空间。 MarkerOptions position
(LatLng position)设置 marker 覆盖物的位置坐标 MarkerOptions alpha
(float alpha)设置 Marker 覆盖物图标的透明度,取值为[0,1],默认1.0,若超出范围则默认为1.0 MarkerOptions perspective
(boolean perspective)设置是否开启 marker 覆盖物近大远小效果,默认开启 MarkerOptions flat
(boolean flat)设置 marker设置 是否平贴地图 MarkerOptions anchor
(float anchorX, float anchorY)绘制方式升级为overlay2.0后,该接口不生效,替换接口:setLocate 设置 marker 覆盖物的锚点比例,默认(0.5f, 1.0f)水平居中,垂直下对齐 MarkerOptions setLocate
(int locate)v7.6.0新增接口 设置marker 覆盖物的锚点位置 绘制方式升级为overlay2.0后,使用该方法替换anchor MarkerOptions rotate
(float rotate)设置 marker 覆盖物旋转角度,逆时针 MarkerOptions visible
(boolean visible)设置 marker 覆盖物的可见性 MarkerOptions extraInfo
(Bundle extraInfo)设置 marker 覆盖物的额外信息
交互
启用可点击时,在点击Marker
时,会回调BaiduMap.OnMarkerClickListener
。 启用允许拖拽时,在拖拽Marker
时,会回调BaiduMap.OnMarkerDragListener
。
类型 方法 说明 MarkerOptions clickable
(boolean isClickable)设置Marker是否可点击 MarkerOptions draggable
(boolean draggable)设置 marker 是否允许拖拽,默认不可拖拽
碰撞
自 7.5.0 起地图SDK支持marker碰撞策略 功能,并兼容之前的marker绘制功能,只有打开isJoinCollision开关才进行碰撞策略。 marker碰撞策略可检测屏幕中海量marker的碰撞情况,并自动更新marker状态,确保屏幕中的marker互不碰撞。 自v7.5.7起,百度地图SDK支持Marker及其title可碰撞地图poi 。
类型 方法 说明 MarkerOptions isJoinCollision
(boolean isJoinCollision)是否参与碰撞,默认值为false MarkerOptions isForceDisPlay
(boolean display)参与碰撞后是否强制展示,默认值为false MarkerOptions priority
(int priority)设置marker碰撞时的显示优先级,默认值为整型的最大值 MarkerOptions startLevel
(int startLevel)最小展示层级,默认值为4 MarkerOptions endLevel
(int endLevel)最大展示层级,室内默认22,室外默认21 MarkerOptions poiCollided
(boolean isCollied)设置是否碰撞底图POI
动画
自v3.3.0版本起,SDK提供了给Marker增加帧动画 的功能,通过MarkerOptions类来设置,一次传入一个Icon列表,通过period设定刷新的帧间隔。 自v3.6.0版本起,SDK提供了加载Marker时的动画效果 ,有如下四种效果供开发者选择。 除了可以自定义的帧动画,Marker还支持设置旋转、缩放、平移、透明、和组合动画效果 。通过Marker类setAnimation方法设置。
类型 方法 说明 MarkerOptions icons
(ArrayList< BitmapDescriptor > icons)设置 Marker 覆盖物的图标,相同图案的 icon 的 marker 最好使用同一个 BitmapDescriptor 对象以节省内存空间。 MarkerOptions period
(int period)设置多少帧刷新一次图片资源,Marker动画的间隔时间,值越小动画越快 MarkerOptions interval
(int mInterval)v7.6.0新增接口 设置marker多帧图片播放时间间隔(ms) 地图绘制方式升级为overlay2.0时,该接口生效 MarkerOptions animateType
(MarkerOptions.MarkerAnimateType type)设置marker动画类型,见 MarkerAnimateType(从天上掉下,从地下生长,跳跃),默认无动画
其它属性
类型 方法 说明 MarkerOptions height
(int height)设置3D marker的高度值 MarkerOptions fixedScreenPosition
(Point point)MarkerOptions infoWindow
(InfoWindow infoWindow)设置 Marker 绑定的InfoWindow MarkerOptions richView
(RichView richView)v7.6.0 新增接口 添加marker上方的ui MarkerOptions scaleX
(float scaleX)设置 Marker 覆盖物X方向缩放 MarkerOptions scaleY
(float scaleY)设置 Marker 覆盖物X方向缩放 MarkerOptions setDrawableResource
(BmDrawableResource resource)MarkerOptions xOffset
(int xOffset)设置Marker坐标的X偏移量 MarkerOptions yOffset
(int yOffset)设置Marker坐标的Y偏移量 MarkerOptions zIndex
(int zIndex)设置 marker 覆盖物的 zIndex
折线的更多属性
常用属性
类型 方法 说明 PolylineOptions width
(int width)设置折线线宽, 默认为 5, 单位:像素 需要注意的是:Polyline的宽度适配地图当前缩放级别下的像素与地理范围的对应关系 PolylineOptions color
(int color)设置折线颜色 PolylineOptions points
(List< LatLng > points)设置折线坐标点列表 PolylineOptions colorsValues
(List< Integer > colors)设置折线每个点的颜色值,每一个点带一个颜色值,绘制时按照索引依次取值 颜色个数 >= points的个数,若colors越界大于点个数,则取最后一个颜色绘制 注意颜色值得格式为:0xAARRGGBB,透明度值在前 PolylineOptions customTexture
(BitmapDescriptor customTexture)设置自定义纹理 PolylineOptions customTextureList
(List< BitmapDescriptor > customTextureList)设置折线多纹理分段绘制的纹理队列 PolylineOptions textureIndex
(List< Integer indexList)设置折线每个点的纹理索引 每一个点带一个索引,List中的值代表customTextureList(List<com.baidu.mapapi.map.BitmapDescriptor>)中纹理图片所在的索引(下标), 绘制时按照索引从customTextureList里面取。 PolylineOptions visible
(boolean visible)设置折线可见性 PolylineOptions extraInfo
(Bundle extraInfo)设置折线额外信息 PolylineOptions dottedLine
(boolean dottedLine)设置折线是否虚线 PolylineOptions dottedLineType
(PolylineDottedLineType polylineDottedLineType)设置Polyline的虚线类型
交互
类型 方法 说明 PolylineOptions clickable
(boolean isClickable)设置Polyline是否可点击
其它
类型 方法 说明 PolylineOptions isGeodesic
(boolean isGeodesic)设置是否绘制为大地曲线 PolylineOptions isGradient
(boolean isGradient)设置是否绘制为渐变色 PolylineOptions bloomType
(PolylineOptions.LineBloomType lineBloomType)添加发光效果 默认不发光 PolylineOptions bloomWidth
(int width)设置发光下的线段宽度,宽度 >0 默认普通线宽 * 2 PolylineOptions bloomAlpha
(int alpha)设置发光下线段透明度(0~255) 默认线段透明度 255 PolylineOptions setBloomGradientASpeed
(float speed)设置透明度渐变发光效果的渐变速率(1.0 ~ 10.0)默认5.0f PolylineOptions setBloomBlurTimes
(int times)设置模糊发光效果的模糊次数(1~10) 默认1次
类型 方法 说明 PolylineOptions focus
(boolean focus)PolylineOptions isThined
(boolean isThined)设置是否需要对Polyline的坐标数据进行抽稀 , 默认抽稀 PolylineOptions keepScale
(boolean isKeep)设置纹理宽、高是否保持原比例渲染 默认为false PolylineOptions lineCapType
(PolylineOptions.LineCapType lineCapType)设置Polyline头尾形状类型 PolylineOptions lineDirectionCross180
(PolylineOptions.LineDirectionCross180 lineDirectionCross180)设置Polyline跨越180度的方向。 PolylineOptions lineJoinType
(PolylineOptions.LineJoinType lineJoinType)设置Polyline拐点衔接的形状类型 PolylineOptions zIndex
(int zIndex)设置折线的叠压顺序,按照值升序叠压
多边形的更多属性
常用属性
类型 方法 说明 PolygonOptions stroke
(Stroke stroke)设置多边形边框信息 PolygonOptions dottedStroke
(boolean dottedStroke)设置是否绘制虚线边框 PolygonOptions dottedStrokeType
(PolylineDottedLineType polylineDottedStrokeType)设置Polygon的虚线Stroke类型 PolygonOptions fillColor
(int color)设置多边形填充颜色 PolygonOptions points
(List< LatLng > points)设置多边形坐标点列表
交互
类型 方法 说明 PolygonOptions setClickable
(boolean isClickable)设置Polygon是否可点击
其它
类型 方法 说明 PolygonOptions addHoleOption
(HoleOptions holeOption)设置Polygon的镂空形状选项 PolygonOptions addHoleOptions
(List< HoleOptions > holeOptions)设置Polygon的镂空形状列表 PolygonOptions extraInfo
(Bundle extraInfo)设置多边形额外信息 PolygonOptions visible
(boolean visible)设置多边形可见性 PolygonOptions zIndex
(int zIndex)设置多边形 zIndex PolygonOptions points
(String encodedPoints, EncodePointType type)设置加密后的位置信息,解密类型
Arc的更多属性
类型 方法 说明 ArcOptions color
(int color)设置弧线的颜色 ArcOptions width
(int width)设置弧线的线宽 ArcOptions points
(LatLng start, LatLng middle, LatLng end)设置弧线的起点、中点、终点坐标 ArcOptions extraInfo
(Bundle extraInfo)设置弧线的额外信息 ArcOptions setClickable
(boolean isClickable)设置Arc是否可点击 ArcOptions visible
(boolean visible)设置弧线是否可见 ArcOptions zIndex
(int zIndex)设置弧线的 zIndex
Circle的更多属性
类型 方法 说明 CircleOptions radius
(int radius)设置圆半径 CircleOptions fillColor
(int color)设置圆填充颜色 CircleOptions stroke
(Stroke stroke)设置圆边框信息 CircleOptions dottedStroke
(boolean dottedStroke)设置是否绘制虚线圆边框 CircleOptions dottedStrokeType
(CircleDottedStrokeType circleDottedStrokeType)设置Circle的虚线Stroke类型 CircleOptions center
(LatLng center)设置圆心坐标 CircleOptions setIsGradientCircle
(boolean isGradientCircle)设置是否为渐变圆 true 需要 ,false 不需要 如设置true 渐变规则如下: (0 ~ radiusWeight * radius) 该部分颜色从 centerColor 渐变至 colorWeight * (sideColor - centerColor); (radiusWeight * radius ~ radius)该部分间颜色从 colorWeight * (sideColor - centerColor) 渐变至 sideColor; 注意:渐变圆不支持镂空及fillColor CircleOptions setSideColor
(int sideColor)设置边缘颜色 CircleOptions setCenterColor
(int centerColor)设置中心颜色 CircleOptions addHoleOption
(HoleOptions holeOption)设置Circle的镂空形状选项 CircleOptions addHoleOptions
(List< HoleOptions > holeOptions)设置Circle的镂空形状列表 CircleOptions extraInfo
(Bundle extraInfo)设置圆额外信息 CircleOptions setClickable
(boolean isClickable)设置Circle是否可点击 CircleOptions setColorWeight
(float colorWeight)设置颜色权重 CircleOptions setRadiusWeight
(float radiusWeight)设置半径权重 CircleOptions visible
(boolean visible)设置圆是否可见 CircleOptions zIndex
(int zIndex)设置圆 zIndex 信息
Text的更多属性
类型 方法 说明 TextOptions text
(String text)设置文字覆盖物的文字内容 TextOptions bgColor
(int bgColor)设置文字覆盖物背景颜色 TextOptions fontSize
(int size)设置文字覆盖物字体大小 TextOptions fontColor
(int color)设置文字覆盖物字体颜色,默认黑色 TextOptions rotate
(float rotate)设置文字覆盖物旋转角度,逆时针 TextOptions position
(LatLng position)设置文字覆盖物地理坐标 TextOptions setClickable
(boolean isClickable)设置Text是否可点击 TextOptions align
(int alignX, int alignY)设置文字覆盖物对齐方式,默认居中对齐 v7.6.0后,若升级地图绘制方式为overlay2.0,该接口无效,替换接口为setLocate TextOptions setLocate
(int locate)v7.6.0新增接口 设置文字覆盖物对齐方式, 默认居中 TextOptions typeface
(Typeface typeface)设置文字覆盖物字体 升级地图绘制方式为overlay2.0后,该方法无效,替换方法为typeFaceType TextOptions typeFaceType
(int typeface)v7.6.0新增接口 升级地图绘制方式为overlay2.0后,该方法生效 TextOptions bgBitmapDescriptor
(BitmapDescriptor bitmapDescriptor)设置text背景图片 7.6.0新增接口 绘制方式升级为overlay2.0时,必须设置该接口才可以设置text背景颜色 TextOptions extraInfo
(Bundle extraInfo)设置文字覆盖物额外信息 TextOptions visible
(boolean visible)设置文字覆盖物可见性 TextOptions zIndex
(int zIndex)设置文字覆盖物 zIndex