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

打印 上一主题 下一主题

主题 1647|帖子 1647|积分 4943

前言

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



  • BaiduMap类中添加和删除Overlay的接口:
类型方法说明OverlayaddOverlay(OverlayOptions options)向舆图添加一个 Overlayjava.util.List< Overlay >addOverlays(List< OverlayOptions > options)向舆图添加多个 Overlayvoidclear()清空舆图全部的 Overlay 覆盖物以及 InfoWindowvoidremoveOverLays(List< Overlay > overlays)批量删除添加的多个 Overlay 覆盖物类

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

  1. // 定义Maker坐标点
  2. LatLng point = new LatLng(39.963175, 116.400244);
  3. // 构建Marker图标
  4. BitmapDescriptor bitmap = BitmapDescriptorFactory
  5.         .fromResource(R.drawable.icon_mark_a);
  6. // 构建MarkerOption,用于在地图上添加Marker
  7. OverlayOptions option = new MarkerOptions()
  8.         .position(point)
  9.         .icon(bitmap);
  10. // 在地图上添加Marker,并显示
  11. Marker marker = (Marker) map.addOverlay(option);
复制代码
Polyline示例

  1. // 构建折线点坐标
  2. LatLng p1 = new LatLng(39.97923, 116.357428);
  3. LatLng p2 = new LatLng(39.94923, 116.397428);
  4. LatLng p3 = new LatLng(39.97923, 116.437428);
  5. List<LatLng> points = new ArrayList<LatLng>();
  6. points.add(p1);
  7. points.add(p2);
  8. points.add(p3);
  9. // 设置折线的属性
  10. OverlayOptions polylineOptions = new PolylineOptions()
  11.         .width(10)
  12.         .color(0xAA00FF00)
  13.         .points(points);
  14. // 在地图上绘制折线
  15. Polyline polyline = (Polyline) map.addOverlay(polylineOptions);
复制代码
Polygon示例

  1. // 多边形顶点位置
  2. List<LatLng> points = new ArrayList<>();
  3. points.add(new LatLng(39.93923, 116.357428));
  4. points.add(new LatLng(39.91923, 116.327428));
  5. points.add(new LatLng(39.89923, 116.347428));
  6. points.add(new LatLng(39.89923, 116.367428));
  7. points.add(new LatLng(39.91923, 116.387428));
  8. // 构造PolygonOptions
  9. PolygonOptions polygonOptions = new PolygonOptions()
  10.         .points(points)
  11.         .fillColor(0xAAFFFF00) // 填充颜色
  12.         .stroke(new Stroke(5, 0xAA00FF00)); // 边框宽度和颜色
  13. // 在地图上显示多边形
  14. Polygon polygon = (Polygon) map.addOverlay(polygonOptions);
复制代码
Arc示例

  1. // 添加弧线坐标数据
  2. LatLng p1 = new LatLng(39.97923, 116.357428); // 起点
  3. LatLng p2 = new LatLng(40.00923, 116.397428); // 中间点
  4. LatLng p3 = new LatLng(39.97923, 116.437428); // 终点
  5. // 构造ArcOptions对象
  6. OverlayOptions arcOptions = new ArcOptions()
  7.         .color(Color.RED)
  8.         .width(10)
  9.         .points(p1, p2, p3);
  10. // 在地图上显示弧线
  11. Arc arc = (Arc) map.addOverlay(arcOptions);
复制代码
Circle示例

  1. // 圆心位置
  2. LatLng center = new LatLng(39.90923, 116.447428);
  3. // 构造CircleOptions对象
  4. CircleOptions mCircleOptions = new CircleOptions().center(center)
  5.         .radius(1400)
  6.         .fillColor(0xAAFFFF00) // 填充颜色
  7.         .stroke(new Stroke(5, 0xAA00ff00)); // 边框宽和边框颜色
  8. // 在地图上显示圆
  9. Circle circle = (Circle) map.addOverlay(mCircleOptions);
  10. overlays.add(circle);
复制代码
Text示例

  1. // 文字覆盖物位置坐标
  2. LatLng llText = new LatLng(39.86923, 116.397428);
  3. // 构建TextOptions对象
  4. OverlayOptions textOptions = new TextOptions()
  5.         .text("百度地图SDK") // 文字内容
  6.         .bgColor(0xAAFFFF00) // 背景色
  7.         .fontSize(28) // 字号
  8.         .fontColor(0xFFFF0000) // 文字颜色
  9.         .rotate(0) // 旋转角度
  10.         .position(llText);
  11. // 在地图上显示文字覆盖物
  12. 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.0MarkerOptionsperspective(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后,使用该方法更换anchorMarkerOptionsrotate(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)是否到场碰撞,默认值为falseMarkerOptionsisForceDisPlay(boolean display)到场碰撞后是否逼迫展示,默认值为falseMarkerOptionspriority(int priority)设置marker碰撞时的显示优先级,默认值为整型的最大值MarkerOptionsstartLevel(int startLevel)最小展示层级,默认值为4MarkerOptionsendLevel(int endLevel)最大展示层级,室内默认22,室外默认21MarkerOptionspoiCollided(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 绑定的InfoWindowMarkerOptionsrichView(RichView richView)v7.6.0 新增接口 添加marker上方的uiMarkerOptionsscaleX(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 默认平常线宽 * 2PolylineOptionsbloomAlpha(int alpha)设置发光下线段透明度(0~255) 默认线段透明度 255PolylineOptionssetBloomGradientASpeed(float speed)设置透明度渐变发光效果的渐变速率(1.0 ~ 10.0)默认5.0fPolylineOptionssetBloomBlurTimes(int times)设置模糊发光效果的模糊次数(1~10) 默认1次 类型方法说明PolylineOptionsfocus(boolean focus)PolylineOptionsisThined(boolean isThined)设置是否需要对Polyline的坐标数据进行抽稀 , 默认抽稀PolylineOptionskeepScale(boolean isKeep)设置纹理宽、高是否保持原比例渲染 默认为falsePolylineOptionslineCapType(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)设置多边形 zIndexPolygonOptionspoints(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; 留意:渐变圆不支持镂空及fillColorCircleOptionssetSideColor(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,该接口无效,更换接口为setLocateTextOptionssetLocate(int locate)v7.6.0新增接口 设置文字覆盖物对齐方式, 默认居中TextOptionstypeface(Typeface typeface)设置文字覆盖物字体 升级舆图绘制方式为overlay2.0后,该方法无效,更换方法为typeFaceTypeTextOptionstypeFaceType(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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表