首页 > 其他分享 >高德地图SDK Android版开发 6 显示覆盖物

高德地图SDK Android版开发 6 显示覆盖物

时间:2024-08-18 14:26:55浏览次数:13  
标签:覆盖物 LatLng 地图 边框 设置 Marker Android 高德 SDK

高德地图SDK Android版开发 6 显示覆盖物

前言

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

地图类中覆盖物的接口

  • AMap类中添加Overlay的接口:
类型方法说明
MarkeraddMarker(MarkerOptions options)在地图上添一个图片标记(marker)对象。
ArrayList< Marker >addMarkers(ArrayList< MarkerOptions > options, boolean moveToCenter)在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示。
PolylineaddPolyline(PolylineOptions options)在地图上添加一个折线对象(polyline)对象。
PolygonaddPolygon(PolygonOptions options)在地图上添加一个多边形(polygon)对象。
ArcaddArc(ArcOptions options)在地图上添加一个圆弧(arc)对象。
CircleaddCircle(CircleOptions options)在地图上添加一个圆(circle)对象。
TextaddText(TextOptions options)在地图上添一个文字标记(text)对象。
  • AMap类中删除Overlay的接口:
类型方法说明
voidclear()从地图上删除所有的overlay(marker,circle,polyline 等对象)。
voidclear(boolean isKeepMyLocationOverlay)从地图上删除所有的覆盖物(marker,circle,polyline 等对象),
但myLocationOverlay(内置定位覆盖物)除外。

覆盖物类

类型说明覆盖物类选项
定义地图 Marker 覆盖物。
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
MarkerOptions option = new MarkerOptions()
        .position(point)
        .icon(bitmap);
// 在地图上添加Marker,并显示
Marker marker = map.addMarker(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<>();
points.add(p1);
points.add(p2);
points.add(p3);

// 设置折线的属性
PolylineOptions polylineOptions = new PolylineOptions()
        .width(10)
        .color(0xAA00FF00)
        .addAll(points);
// 在地图上绘制折线
Polyline polyline = map.addPolyline(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()
        .addAll(points)
        .fillColor(0xAAFFFF00) // 填充颜色
        .strokeColor(0xAA00FF00) // 边框颜色
        .strokeWidth(5); // 边框宽度

// 在地图上显示多边形
Polygon polygon = map.addPolygon(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对象
ArcOptions arcOptions = new ArcOptions()
        .strokeColor(Color.RED)
        .strokeWidth(10)
        .point(p1, p2, p3);

// 在地图上显示弧线
Arc arc = map.addArc(arcOptions);

Circle示例

// 圆心位置
LatLng center = new LatLng(39.90923, 116.447428);

// 构造CircleOptions对象
CircleOptions circleOptions = new CircleOptions()
        .center(center)
        .radius(1400)
        .fillColor(0xAAFFFF00) // 填充颜色
        .strokeColor(0xAA00ff00) // 边框颜色
        .strokeWidth(5);  // 边框宽

// 在地图上显示圆
Circle circle = map.addCircle(circleOptions);

移除示例

// 从地图上删除所有的覆盖物(marker,circle,polyline 等对象),
// 但myLocationOverlay(内置定位覆盖物)除外。
boolean isKeepMyLocationOverlay = true;
map.clear(isKeepMyLocationOverlay);

效果图

在这里插入图片描述

Marker的更多属性

Marker有如下属性:

  • 锚点:图标摆放在地图上的基准点。默认情况下,锚点是从图片下沿的中间处。
  • 位置:Marker是通过经纬度的值来标注在地图上的。
  • 标题:当点击Marker显示在信息窗口的文字,随时可以更改。
  • 片段:除了标题外其他的文字,随时可以更改。
  • 图标:Marker显示的图标。如果未设置图标,API 将使用默认的图标,高德为默认图标提供了10 种颜色备选。默认情况下,Marker 是可见的。可随时更改Marker 的可见性。

常用属性

类型方法说明
MarkerOptionsicon(BitmapDescriptor icon)设置Marker覆盖物的图标。
MarkerOptionsposition(LatLng position)设置Marker覆盖物的位置坐标。
MarkerOptionsalpha(float alpha)设置Marker覆盖物的透明度
MarkerOptionsperspective(boolean perspective)已过时。
MarkerOptionsdraggable(boolean enable)设置Marker覆盖物是否可拖拽。
MarkerOptionssetFlat(boolean flat)设置Marker覆盖物是否平贴地图。
MarkerOptionsanchor(float u, float v)设置Marker覆盖物的锚点比例。
MarkerOptionsrotateAngle(float rotate)设置Marker覆盖物的图片旋转角度,从正北开始,逆时针计算。
MarkerOptionsvisible(boolean visible)设置Marker覆盖物是否可见。

交互

启用允许拖拽时,在拖拽Marker时,会回调AMap.OnMarkerDragListener

类型方法说明
MarkerOptionsdraggable(boolean enable)设置Marker覆盖物是否可拖拽。

动画

  • SDK提供了给Marker增加帧动画的功能,通过MarkerOptions类来设置,一次传入一个Icon列表,通过period设定刷新的帧间隔。
  • 自地图 SDK V4.0.0 版本起,SDK 提供了给 Marker 设置动画的方法。通过MarkersetAnimation方法设置。
类型方法说明
MarkerOptionsicons(ArrayList< BitmapDescriptor > icons)设置Marker覆盖物的动画帧图标列表,多张图片模拟gif的效果。
MarkerOptionsperiod(int period)设置多少帧刷新一次图片资源,Marker动画的间隔时间,值越小动画越快。

其它属性

类型方法说明
MarkerOptionstitle(String title)设置 Marker覆盖物 的标题
MarkerOptionssnippet(String snippet)设置 Marker覆盖物的 文字描述
MarkerOptionsinfoWindowEnable(boolean enabled)设置Marker覆盖物的InfoWindow是否允许显示,默认为true
MarkerOptionssetInfoWindowOffset(int offsetX, int offsetY)设置Marker覆盖物的InfoWindow相对Marker的偏移。
MarkerOptionsaltitude(float altitude)marker的海拔
MarkerOptionszIndex(float zIndex)设置Marker覆盖物 zIndex。
MarkerOptionssetGps(boolean isGps)设置Marker覆盖物的坐标是否是Gps,默认为false。

折线的更多属性

地图线段覆盖物。一个线段是多个连贯点的集合线段。它拥有以下属性:

  • 顶点:线段是由两个顶点之间连贯的点构成的。如果两个顶点相同,则一个线段将闭合。
  • 宽度:宽度是单位是像素。宽度是可视区域的缩放级别无关。默认为10。
  • 颜色:线段的颜色是ARGB格式,颜色格式可以参考 Color。默认是黑色(0xff000000)。
  • Z轴:Z轴是控制地图覆盖物之间的绘制层次的参数。这个参数能够控制CirclesPolygonsPolyline的绘制层次,但不会影响Marker。 Z轴数值越大的覆盖物将会绘制在更上层。如果两个及两个以上覆盖物的Z轴数值相同,则最后的绘制结果是随机的。 覆盖物的Z轴默认为0。
  • 可见:这个属性表示了线段是否可以显示在地图上。如果设置为不可见,则绘制地图时不会绘制此线段,但其他属性不受影响。默认为可见。

常用属性

类型方法说明
PolylineOptionswidth(float width)设置线段的宽度,默认为10。
PolylineOptionscolor(int color)设置线段的颜色,需要传入32位的ARGB格式。
PolylineOptionstransparency(float transparency)设置线段的透明度0~1,默认是1,1表示不透明
PolylineOptionsadd(LatLng… points)追加一批顶点到线段的坐标集合。
PolylineOptionsadd(LatLng point)追加一个顶点到线段的坐标集合。
PolylineOptionsaddAll(Iterable< LatLng > points)追加一批顶点到线段的坐标集合。
PolylineOptionscolorValues(List< Integer > colors)设置线段的颜色
PolylineOptionssetCustomTexture(BitmapDescriptor customTexture)设置线段的纹理图,图片为2的n次方。
PolylineOptionssetCustomTextureList(List< BitmapDescriptor > customTextureList)设置线段纹理list
PolylineOptionssetCustomTextureIndex(List< Integer > custemTextureIndexs)设置线段纹理index数组
PolylineOptionssetUseTexture(boolean useTexture)设置是否使用纹理贴图画线。
PolylineOptionsvisible(boolean isVisible)设置线段的可见性。
PolylineOptionssetDottedLine(boolean isDottedLine)设置是否画虚线,默认为false,画实线。
PolylineOptionssetDottedLineType(int type)设置虚线形状。

其它属性

类型方法说明
PolylineOptionsgeodesic(boolean isGeodesic)设置线段是否为大地曲线,默认false,不画大地曲线。
PolylineOptionsuseGradient(boolean useGradient)设置线段是否使用渐变色
PolylineOptionssetEraseColor(boolean eraseVisible, int eraseColor)设置线段擦除(显示范围外)颜色,需要传入32位的ARGB格式,针对颜色线段生效。
PolylineOptionslineCapType(PolylineOptions.LineCapType lineCapType)设置Polyline尾部形状
PolylineOptionslineJoinType(PolylineOptions.LineJoinType lineJoinType)设置Polyline连接处形状
PolylineOptionszIndex(float zIndex)设置线段Z轴的值。

多边形的更多属性

多边形覆盖物。一个多边形可以凸面体,也可是凹面体。它有以下属性:

  • 边框:一个多边开的边框由一系列的顺时针或逆时针顶点组成。边框不需要声明起点和终点一致。如果边框的起点与终点不一致,API会自动将它封闭。
  • 边框宽度:边框的宽度以像素为单位,不会受可视区域缩放级别的影响。默认为10。
  • 边框颜色:边框颜色是一个ARGB格式,ARGB请参考android.graphics.Color。默认为黑色。
  • 填充颜色:填充颜色是一个ARGB格式,ARGB格式可参考android.graphics.Color。默认是透明的。如果多边形的几何图形不正确,则填充颜色不会被绘制。
  • Z轴:Z轴是控制覆盖物重复区域的绘制顺序的值。Z轴较大的覆盖物会在绘制在Z轴较小的覆盖物上面。如果两个覆盖物的Z轴数值相同,则覆盖情况将随机。默认为0。
  • 可见性:标示多边形是否可见。如果可见性为否,则不会被绘制。

多边形方法必须在主线程中调用,否则会抛出IllegalStateException

常用属性

类型方法说明
PolygonOptionsstrokeColor(int paramInt)设置多边形的边框颜色,32位 ARGB格式,默认为黑色。
PolygonOptionsstrokeWidth(float paramFloat)设置多边形的边框宽度,单位:像素。
PolygonOptionsfillColor(int paramInt)设置多边形的填充颜色,32位ARGB格式。
PolygonOptionsadd(LatLng… paramArrayOfLatLng)添加多个多边形边框的顶点
PolygonOptionsadd(LatLng paramLatLng)添加一个多边形边框的顶点
PolygonOptionsaddAll(Iterable< LatLng > paramIterable)添加多个多边形边框的顶点

其它属性

类型方法说明
PolygonOptionsaddHoles(BaseHoleOptions… paramArrayOfOptions)设置空心洞的配置项
PolygonOptionsaddHoles(Iterable paramIterable)添加空心洞的配置项
PolygonOptionsvisible(boolean paramBoolean)设置多边形是否可见。
PolygonOptionszIndex(float paramFloat)设置多边形的Z轴数值
PolygonOptionslineJoinType(AMapPara.LineJoinType lineJoinType)设置边框连接处形状

Arc的更多属性

弧形的类。它有以下属性:

  • 边框宽度:弧形边框的宽度。这个值设置后不会受到可视区域缩放级别的影响。默认为10。
  • 边框颜色:边框颜色是一个ARGB格式,ARGB请参考android.graphics.Color。默认为黑色。
  • Z轴:Z轴是控制覆盖物重复区域的绘制顺序的值。Z轴较大的覆盖物会绘制在Z轴较小的覆盖物上面。如果两个覆盖物的Z轴数值相同,则覆盖情况将随机。默认值为0。
  • 可见性:标示弧形是否可见。如果可见性为否,则不会被绘制。

弧形方法必须在主线程中调用,否则会抛出IllegalStateException

类型方法说明
ArcOptionsstrokeColor(int color)设置弧形边框颜色参数,ARGB格式。
ArcOptionsstrokeWidth(float width)设置弧形边框宽度参数,单位:像素。
ArcOptionspoint(LatLng startpoint, LatLng passedpoint, LatLng endpoint)设置弧线的起终点和途径点。
ArcOptionsvisible(boolean visible)设置弧形是否可见参数。
ArcOptionszIndex(float zIndex)设置弧形Z轴数值参数,默认为0。

Circle的更多属性

圆对象有以下属性:

  • 圆心 :圆心的经纬度。
  • 半径: 圆的半径,单位:米。这个值应该大于等于0。
  • 边框宽度: 圆的边框宽度。这个值设置后不会受到可视区域缩放级别的影响。默认为10。
  • 边框颜色:圆的边框颜色,ARGB格式。默认为黑色。
  • 填充颜色:圆的填充颜色,ARGB格式。默认为透明。
  • Z轴:Z轴是控制覆盖物重复区域的绘制顺序的值。Z轴较大的覆盖物会绘制在Z轴较小的覆盖物上面。如果两个覆盖物的Z轴数值相同,则覆盖情况将随机。默认值为0。
  • 可见属性:标识多边形是否可见。如果可见性为否,则不会被绘制。

圆形方法必须在主线程中调用,否则会抛出IllegalStateException

类型方法说明
CircleOptionsradius(double radius)设置圆的半径,单位米。
CircleOptionsfillColor(int color)设置圆的填充颜色。
CircleOptionsstrokeColor(int color)设置圆的边框颜色,ARGB格式。
CircleOptionsstrokeWidth(float width)设置圆的边框宽度,单位像素。
CircleOptionssetStrokeDottedLineType(int type)设置圆的边框虚线形状。
CircleOptionscenter(LatLng point)设置圆心经纬度坐标。
CircleOptionsaddHoles(BaseHoleOptions… paramArrayOfOptions)添加空心洞的配置项
CircleOptionsaddHoles(Iterable paramIterable)添加空心洞的配置项
CircleOptionsvisible(boolean visible)设置圆的可见属性
CircleOptionszIndex(float zIndex)设置圆的Z轴数值,默认为0。

Text的更多属性

类型方法说明
TextOptionstext(String text)设置文字覆盖物的文字内容。
TextOptionsbackgroundColor(int backgroundColor)设置文字覆盖物的背景颜色
TextOptionsfontSize(int fontSize)设置文字覆盖物字体大小
TextOptionsfontColor(int fontColor)设置文字覆盖物的字体颜色,默认黑色。
TextOptionsrotate(float rotate)设置文字覆盖物的旋转角度,逆时针。
TextOptionsposition(LatLng position)设置文字覆盖物的地理坐标。
TextOptionsalign(int alignX, int alignY)设置文字覆盖物的对齐方式,默认居中对齐。
TextOptionstypeface(Typeface typeface)设置文字覆盖物的字体。
TextOptionssetObject(Object object)设置文字覆盖物的额外信息
TextOptionsvisible(boolean visible)设置文字覆盖物的可见性。
TextOptionszIndex(float zIndex)设置文字覆盖物 zIndex。

标签:覆盖物,LatLng,地图,边框,设置,Marker,Android,高德,SDK
From: https://blog.csdn.net/kikikiki001/article/details/141299361

相关文章

  • 【Android驱动12】Modem编译和sim卡配置检测过程
    一,Modem编译1.1查看ReleseNote发现需要查看"Build_Configure_Modem_MOLY"这张表,解压MT67xx_(xxx)_MOLY.LR9.W1444.MD.LWTG.MP.Vx.tar.gz到某文件,并在make目录下查看支持的配置信息1.2执行的命令,开始编译modem,则是./make.sh"SM67xx(Lxx_xxx).mak"new1.3执行perl......
  • Android 13.0 recovery页面旋转180度问题的解决方案
    1.前言在13.0的系统rom定制化开发工作中,在系统中recovery的页面也是相关重要的一部分,在系统recoveryota升级等功能,都是需要recovery功能的,在某些产品定制化中在recovery的时候,发现居然旋转了180度,接下来分析下recovery关于屏幕显示方向的相关源码,来修改这个功能2.recovery......
  • 基于flask+vue框架的基于Android的校园公益管理APP小程序端[开题+论文+程序]-计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今社会,随着教育理念的进步和青年学生社会责任感的增强,校园公益活动已成为培养学生综合素质、促进社会和谐的重要途径。然而,传统的公益......
  • Android MTP流程
    概要本文的目的是介绍Android系统中MTP的一些相关知识。主要的内容包括:第1部分MTP简介      对Mtp协议进行简单的介绍。第2部分MTP框架      介绍Android系统下MTP的框架。第3部分MTP启动流程      详细分析MTP服务的启动流程,包括Java层,......
  • 【Java毕设选题推荐】基于SpringBoot的springboot基于Android的房屋租赁App
    前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务......
  • vue使用高德获取当前地区天气
    1、收件箱|高德控制台(amap.com) 首先打开高德开放平台注册一下2、创建一个应用获取到key后面获取天气的时候 请求接口的时候会用到key 2.1.1创建应用的时候注意类型选成天气   2.1.2创建完成之后就点添加key然后选择web服务就行3、可以调取天气接口天......
  • Android 13 about launcher3 (1)
    Android13Launcher3android13#launcher3#分屏相关Launcher3修改wmdensity界面布局不改变/packages/apps/Launcher3/src/com/android/launcher3/InvariantDeviceProfile.javaLauncher的默认配置加载类,通过InvariantDeviceProfile方法可以看出,CellLayout显示的应用行数和列......
  • Android架构组件中的MVVM
    Android架构组件中的MVVM(Model-View-ViewModel)模式是一种广泛应用的设计模式,它通过将应用程序分为三个主要部分(Model、View、ViewModel)来分离用户界面和业务逻辑,从而提高代码的可维护性、可扩展性和可测试性。下面将详细介绍MVVM模式在Android开发中的实战应用,包括基本概念......
  • Android开发 - 使用自定义接口在新窗口中传回数据
    在Android开发中,有时候我们需要在新打开的窗口中传递数据回来。例如:在新打开的DialogFragment窗口传递数据回MainActivity启动窗口代码举例首先在MainActivity中定义实例化一个DialogFragment窗口//MainActivity.java//点击按钮打开一个DialogFragment窗口......
  • Android Linux EAS优化-schedtune
    SchedTuneSchedTune是一项与CPU调频相关的性能提升技术,它实现为一个cgroup控制器。这个控制器提供了一个名称为schedtune.boost的配置参数,运行时系统可以使用它来更改该组中的进程的调度方式。每当调整这个参数的时候,它会使受影响的进程看起来比实际更重(或更轻)。如果一个组被提......