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

devtools/2024/9/24 7:05:37/

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

  • 前言
  • 地图类中覆盖物的接口
  • 覆盖物类
    • Marker示例
    • Polyline示例
    • Polygon示例
    • Arc示例
    • Circle示例
    • Text示例
    • 效果图
  • Marker的更多属性
    • 常用属性
    • 交互
    • 碰撞
    • 动画
    • 其它属性
  • 折线的更多属性
    • 常用属性
    • 交互
    • 其它
  • 多边形的更多属性
    • 常用属性
    • 交互
    • 其它
  • Arc的更多属性
  • Circle的更多属性
  • Text的更多属性

前言

在地图应用中,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

http://www.ppmy.cn/devtools/96089.html

相关文章

Rust 错误处理

Rust 错误处理 Rust 是一种系统编程语言,以其内存安全、高并发和实用性而著称。在 Rust 中,错误处理是一个核心概念,它通过提供 Result 和 Option 类型来鼓励开发者显式地处理可能出现的错误,而不是依赖异常机制。本文将深入探讨 Rust 中的错误处理机制,包括 Result 和 O…

LeetCode //C - 316. Remove Duplicate Letters

316. Remove Duplicate Letters Given a string s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the smallest in lexicographical order among all possible results. Example 1: Input: s “bcabc”…

动态规划(算法篇)

算法之动态规划 动态规划(dp) 概念&#xff1a; 将递归算法重新写成非递归算法&#xff0c;让后者把那些子问题的答案系统地记录在一个表(dp数组)内&#xff0c;这种方法叫做动态规划通常用于求解具有最优性质的问题(最优子结构&最优子问题)&#xff0c;希望找到具有最优…

数据结构队列的单链表实现

1.Queuec.h头文件函数名 #pragma once #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h> typedef int QDataType; typedef struct QueueNode {QDataType data;struct QueueNode* next; }QNode; typedef struct Queue {Q…

MySQL中处理JSON数据:大数据分析的新方向,详解与示例

文章目录 1. MySQL中的JSON数据类型2. JSON函数和运算符3. 创建JSON列的表4. 插入JSON数据5. 查询JSON数据6. 复杂查询和聚合7. JSON 数据的索引8. 总结 在当今的大数据时代&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&a…

【测试用例设计方法】错误猜测法

1.错误推测法的概念 错误推测法就是基于经验和直觉推测程序中所有可能存在的各种错误&#xff0c;有针对性地设计测试用例的方法。 2.错误推断法的基本思想 列举出程序中所有可能有的错误和容易发生错误的特殊情况&#xff0c;根据它们选择测试用例。 3. 错误推测法的应用案例 …

Linux命令更新-网络管理

引言 Linux系统作为一个灵活且强大的操作系统&#xff0c;其网络管理功能也是非常丰富的。本文将深入探讨Linux中常用的网络管理命令&#xff0c;包括ifconfig、ip、route等&#xff0c;并结合实例演示其用法和功能&#xff0c;旨在帮助读者更全面地掌握Linux网络配置与管理。…

面向自动驾驶保证车辆转向稳定性的模型预测控制

摘 要 车辆智能化是当前和未来汽车发展的主要方向和核心技术之一。随着车辆智能化水 平的提高&#xff0c;自动驾驶等级从无自动驾驶向完全自动驾驶提升。在自动驾驶的人机协同控制 和完全自动驾驶阶段&#xff0c;由于人类驾驶员在动态驾驶任务中的参与程度不同&#xff0c;…