百度地图SDK Android版开发 6 显示覆盖物

前言

在地图应用中,Overlay(覆盖层)是指在地图图层之上叠加显示的额外信息层。这些覆盖层可以用来展示各种数据,如交通状况、用户位置、兴趣点(POI)等。在百度地图SDK中,可以使用多种类型的覆盖层来增强地图的功能和视觉效果。文本介绍简单的点线面和文本覆盖物使用方法和属性。

地图类中覆盖物的接口

  • BaiduMap类中添加和删除Overlay的接口:
类型方法说明
OverlayaddOverlay(OverlayOptions options)向地图添加一个 Overlay
java.util.List< Overlay >addOverlays(List< OverlayOptions > options)向地图添加多个 Overlay
voidclear()清空地图所有的 Overlay 覆盖物以及 InfoWindow
voidremoveOverLays(List< Overlay > overlays)批量删除添加的多个 Overlay

覆盖物类

类型说明覆盖物类选项
定义地图 Marker 覆盖物MarkerMarkerOptions
折线定义地图折线覆盖物PolylinePolylineOptions
多边形定义地图中绘制多边形PolygonPolygonOptions
弧线定义了在地图上绘制弧线的类。三点坐标确定一条弧线ArcArcOptions
定义在地图上画一个圆的类CircleCircleOptions
文本定义在地图中绘制的文字覆盖物TextTextOptions

Marker示例

// 定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
// 构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
        .fromResource(R.drawable.icon_mark_a);
// 构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
        .position(point)
        .icon(bitmap);
// 在地图上添加Marker,并显示
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 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); // 终点

// 构造ArcOptions对象
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对象
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);

// 构建TextOptions对象
OverlayOptions textOptions = new TextOptions()
        .text("百度地图SDK") // 文字内容
        .bgColor(0xAAFFFF00) // 背景色
        .fontSize(28) // 字号
        .fontColor(0xFFFF0000) // 文字颜色
        .rotate(0) // 旋转角度
        .position(llText);

// 在地图上显示文字覆盖物
Text text = (Text) map.addOverlay(textOptions);

效果图

在这里插入图片描述

Marker的更多属性

常用属性

类型方法说明
MarkerOptionsicon(BitmapDescriptor icon)设置 Marker 覆盖物的图标,相同图案的 icon 的 marker 最好使用同一个 BitmapDescriptor 对象以节省内存空间。
MarkerOptionsposition(LatLng position)设置 marker 覆盖物的位置坐标
MarkerOptionsalpha(float alpha)设置 Marker 覆盖物图标的透明度,取值为[0,1],默认1.0,若超出范围则默认为1.0
MarkerOptionsperspective(boolean perspective)设置是否开启 marker 覆盖物近大远小效果,默认开启
MarkerOptionsflat(boolean flat)设置 marker设置 是否平贴地图
MarkerOptionsanchor(float anchorX, float anchorY)绘制方式升级为overlay2.0后,该接口不生效,替换接口:setLocate 设置 marker 覆盖物的锚点比例,默认(0.5f, 1.0f)水平居中,垂直下对齐
MarkerOptionssetLocate(int locate)v7.6.0新增接口 设置marker 覆盖物的锚点位置 绘制方式升级为overlay2.0后,使用该方法替换anchor
MarkerOptionsrotate(float rotate)设置 marker 覆盖物旋转角度,逆时针
MarkerOptionsvisible(boolean visible)设置 marker 覆盖物的可见性
MarkerOptionsextraInfo(Bundle extraInfo)设置 marker 覆盖物的额外信息

交互

  • 启用可点击时,在点击Marker时,会回调BaiduMap.OnMarkerClickListener
  • 启用允许拖拽时,在拖拽Marker时,会回调BaiduMap.OnMarkerDragListener
类型方法说明
MarkerOptionsclickable(boolean isClickable)设置Marker是否可点击
MarkerOptionsdraggable(boolean draggable)设置 marker 是否允许拖拽,默认不可拖拽

碰撞

  • 自 7.5.0 起地图SDK支持marker碰撞策略功能,并兼容之前的marker绘制功能,只有打开isJoinCollision开关才进行碰撞策略。
    marker碰撞策略可检测屏幕中海量marker的碰撞情况,并自动更新marker状态,确保屏幕中的marker互不碰撞。
  • 自v7.5.7起,百度地图SDK支持Marker及其title可碰撞地图poi
类型方法说明
MarkerOptionsisJoinCollision(boolean isJoinCollision)是否参与碰撞,默认值为false
MarkerOptionsisForceDisPlay(boolean display)参与碰撞后是否强制展示,默认值为false
MarkerOptionspriority(int priority)设置marker碰撞时的显示优先级,默认值为整型的最大值
MarkerOptionsstartLevel(int startLevel)最小展示层级,默认值为4
MarkerOptionsendLevel(int endLevel)最大展示层级,室内默认22,室外默认21
MarkerOptionspoiCollided(boolean isCollied)设置是否碰撞底图POI

动画

  • 自v3.3.0版本起,SDK提供了给Marker增加帧动画的功能,通过MarkerOptions类来设置,一次传入一个Icon列表,通过period设定刷新的帧间隔。
  • 自v3.6.0版本起,SDK提供了加载Marker时的动画效果,有如下四种效果供开发者选择。
  • 除了可以自定义的帧动画,Marker还支持设置旋转、缩放、平移、透明、和组合动画效果。通过Marker类setAnimation方法设置。
类型方法说明
MarkerOptionsicons(ArrayList< BitmapDescriptor > icons)设置 Marker 覆盖物的图标,相同图案的 icon 的 marker 最好使用同一个 BitmapDescriptor 对象以节省内存空间。
MarkerOptionsperiod(int period)设置多少帧刷新一次图片资源,Marker动画的间隔时间,值越小动画越快
MarkerOptionsinterval(int mInterval)v7.6.0新增接口 设置marker多帧图片播放时间间隔(ms) 地图绘制方式升级为overlay2.0时,该接口生效
MarkerOptionsanimateType(MarkerOptions.MarkerAnimateType type)设置marker动画类型,见 MarkerAnimateType(从天上掉下,从地下生长,跳跃),默认无动画

其它属性

类型方法说明
MarkerOptionsheight(int height)设置3D marker的高度值
MarkerOptionsfixedScreenPosition(Point point)
MarkerOptionsinfoWindow(InfoWindow infoWindow)设置 Marker 绑定的InfoWindow
MarkerOptionsrichView(RichView richView)v7.6.0 新增接口 添加marker上方的ui
MarkerOptionsscaleX(float scaleX)设置 Marker 覆盖物X方向缩放
MarkerOptionsscaleY(float scaleY)设置 Marker 覆盖物X方向缩放
MarkerOptionssetDrawableResource(BmDrawableResource resource)
MarkerOptionsxOffset(int xOffset)设置Marker坐标的X偏移量
MarkerOptionsyOffset(int yOffset)设置Marker坐标的Y偏移量
MarkerOptionszIndex(int zIndex)设置 marker 覆盖物的 zIndex

折线的更多属性

常用属性

类型方法说明
PolylineOptionswidth(int width)设置折线线宽, 默认为 5, 单位:像素 需要注意的是:Polyline的宽度适配地图当前缩放级别下的像素与地理范围的对应关系
PolylineOptionscolor(int color)设置折线颜色
PolylineOptionspoints(List< LatLng > points)设置折线坐标点列表
PolylineOptionscolorsValues(List< Integer > colors)设置折线每个点的颜色值,每一个点带一个颜色值,绘制时按照索引依次取值 颜色个数 >= points的个数,若colors越界大于点个数,则取最后一个颜色绘制 注意颜色值得格式为:0xAARRGGBB,透明度值在前
PolylineOptionscustomTexture(BitmapDescriptor customTexture)设置自定义纹理
PolylineOptionscustomTextureList(List< BitmapDescriptor > customTextureList)设置折线多纹理分段绘制的纹理队列
PolylineOptionstextureIndex(List< Integer indexList)设置折线每个点的纹理索引 每一个点带一个索引,List中的值代表customTextureList(List<com.baidu.mapapi.map.BitmapDescriptor>)中纹理图片所在的索引(下标), 绘制时按照索引从customTextureList里面取。
PolylineOptionsvisible(boolean visible)设置折线可见性
PolylineOptionsextraInfo(Bundle extraInfo)设置折线额外信息
PolylineOptionsdottedLine(boolean dottedLine)设置折线是否虚线
PolylineOptionsdottedLineType(PolylineDottedLineType polylineDottedLineType)设置Polyline的虚线类型

交互

类型方法说明
PolylineOptionsclickable(boolean isClickable)设置Polyline是否可点击

其它

类型方法说明
PolylineOptionsisGeodesic(boolean isGeodesic)设置是否绘制为大地曲线
PolylineOptionsisGradient(boolean isGradient)设置是否绘制为渐变色
PolylineOptionsbloomType(PolylineOptions.LineBloomType lineBloomType)添加发光效果 默认不发光
PolylineOptionsbloomWidth(int width)设置发光下的线段宽度,宽度 >0 默认普通线宽 * 2
PolylineOptionsbloomAlpha(int alpha)设置发光下线段透明度(0~255) 默认线段透明度 255
PolylineOptionssetBloomGradientASpeed(float speed)设置透明度渐变发光效果的渐变速率(1.0 ~ 10.0)默认5.0f
PolylineOptionssetBloomBlurTimes(int times)设置模糊发光效果的模糊次数(1~10) 默认1次
类型方法说明
PolylineOptionsfocus(boolean focus)
PolylineOptionsisThined(boolean isThined)设置是否需要对Polyline的坐标数据进行抽稀 , 默认抽稀
PolylineOptionskeepScale(boolean isKeep)设置纹理宽、高是否保持原比例渲染 默认为false
PolylineOptionslineCapType(PolylineOptions.LineCapType lineCapType)设置Polyline头尾形状类型
PolylineOptionslineDirectionCross180(PolylineOptions.LineDirectionCross180 lineDirectionCross180)设置Polyline跨越180度的方向。
PolylineOptionslineJoinType(PolylineOptions.LineJoinType lineJoinType)设置Polyline拐点衔接的形状类型
PolylineOptionszIndex(int zIndex)设置折线的叠压顺序,按照值升序叠压

多边形的更多属性

常用属性

类型方法说明
PolygonOptionsstroke(Stroke stroke)设置多边形边框信息
PolygonOptionsdottedStroke(boolean dottedStroke)设置是否绘制虚线边框
PolygonOptionsdottedStrokeType(PolylineDottedLineType polylineDottedStrokeType)设置Polygon的虚线Stroke类型
PolygonOptionsfillColor(int color)设置多边形填充颜色
PolygonOptionspoints(List< LatLng > points)设置多边形坐标点列表

交互

类型方法说明
PolygonOptionssetClickable(boolean isClickable)设置Polygon是否可点击

其它

类型方法说明
PolygonOptionsaddHoleOption(HoleOptions holeOption)设置Polygon的镂空形状选项
PolygonOptionsaddHoleOptions(List< HoleOptions > holeOptions)设置Polygon的镂空形状列表
PolygonOptionsextraInfo(Bundle extraInfo)设置多边形额外信息
PolygonOptionsvisible(boolean visible)设置多边形可见性
PolygonOptionszIndex(int zIndex)设置多边形 zIndex
PolygonOptionspoints(String encodedPoints, EncodePointType type)设置加密后的位置信息,解密类型

Arc的更多属性

类型方法说明
ArcOptionscolor(int color)设置弧线的颜色
ArcOptionswidth(int width)设置弧线的线宽
ArcOptionspoints(LatLng start, LatLng middle, LatLng end)设置弧线的起点、中点、终点坐标
ArcOptionsextraInfo(Bundle extraInfo)设置弧线的额外信息
ArcOptionssetClickable(boolean isClickable)设置Arc是否可点击
ArcOptionsvisible(boolean visible)设置弧线是否可见
ArcOptionszIndex(int zIndex)设置弧线的 zIndex

Circle的更多属性

类型方法说明
CircleOptionsradius(int radius)设置圆半径
CircleOptionsfillColor(int color)设置圆填充颜色
CircleOptionsstroke(Stroke stroke)设置圆边框信息
CircleOptionsdottedStroke(boolean dottedStroke)设置是否绘制虚线圆边框
CircleOptionsdottedStrokeType(CircleDottedStrokeType circleDottedStrokeType)设置Circle的虚线Stroke类型
CircleOptionscenter(LatLng center)设置圆心坐标
CircleOptionssetIsGradientCircle(boolean isGradientCircle)设置是否为渐变圆 true 需要 ,false 不需要 如设置true 渐变规则如下: (0 ~ radiusWeight * radius) 该部分颜色从 centerColor 渐变至 colorWeight * (sideColor - centerColor); (radiusWeight * radius ~ radius)该部分间颜色从 colorWeight * (sideColor - centerColor) 渐变至 sideColor; 注意:渐变圆不支持镂空及fillColor
CircleOptionssetSideColor(int sideColor)设置边缘颜色
CircleOptionssetCenterColor(int centerColor)设置中心颜色
CircleOptionsaddHoleOption(HoleOptions holeOption)设置Circle的镂空形状选项
CircleOptionsaddHoleOptions(List< HoleOptions > holeOptions)设置Circle的镂空形状列表
CircleOptionsextraInfo(Bundle extraInfo)设置圆额外信息
CircleOptionssetClickable(boolean isClickable)设置Circle是否可点击
CircleOptionssetColorWeight(float colorWeight)设置颜色权重
CircleOptionssetRadiusWeight(float radiusWeight)设置半径权重
CircleOptionsvisible(boolean visible)设置圆是否可见
CircleOptionszIndex(int zIndex)设置圆 zIndex 信息

Text的更多属性

类型方法说明
TextOptionstext(String text)设置文字覆盖物的文字内容
TextOptionsbgColor(int bgColor)设置文字覆盖物背景颜色
TextOptionsfontSize(int size)设置文字覆盖物字体大小
TextOptionsfontColor(int color)设置文字覆盖物字体颜色,默认黑色
TextOptionsrotate(float rotate)设置文字覆盖物旋转角度,逆时针
TextOptionsposition(LatLng position)设置文字覆盖物地理坐标
TextOptionssetClickable(boolean isClickable)设置Text是否可点击
TextOptionsalign(int alignX, int alignY)设置文字覆盖物对齐方式,默认居中对齐 v7.6.0后,若升级地图绘制方式为overlay2.0,该接口无效,替换接口为setLocate
TextOptionssetLocate(int locate)v7.6.0新增接口 设置文字覆盖物对齐方式, 默认居中
TextOptionstypeface(Typeface typeface)设置文字覆盖物字体 升级地图绘制方式为overlay2.0后,该方法无效,替换方法为typeFaceType
TextOptionstypeFaceType(int typeface)v7.6.0新增接口 升级地图绘制方式为overlay2.0后,该方法生效
TextOptionsbgBitmapDescriptor(BitmapDescriptor bitmapDescriptor)设置text背景图片 7.6.0新增接口 绘制方式升级为overlay2.0时,必须设置该接口才可以设置text背景颜色
TextOptionsextraInfo(Bundle extraInfo)设置文字覆盖物额外信息
TextOptionsvisible(boolean visible)设置文字覆盖物可见性
TextOptionszIndex(int zIndex)设置文字覆盖物 zIndex
  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值