绘制面和形状

最后更新时间:2025-04-17

地图上的面一组在地图上的封闭线段组成的图形,包括圆形和多边形,用户可以为它设置描边和填充颜色。


多边形

多边形是由 Polygon 类定义的一组在地图上的封闭线段组成的图形,它由一组 LatLng 点按顺序连接而成。添加折线使用 Tencentmap.addPolygon(PolygonOptions options) 接口返回 Polygon 实例,Polygon 是在地图上画多边形的类,可以移除remove()多边形、设置多边形顶点、描边的宽度和颜色、多边形的填充色、层级关系、可见性、可点击性,也可以通过setOptions(PolygonOptions opts)设置一组属性。


下面的代码展示了添加多边形、设置多边形属性、移除多边形的方法:

1.添加多边形:

  LatLng[] latLngs = {
        new LatLng(39.984864, 116.305756),
        new LatLng(39.983618, 116.305848),
        new LatLng(39.982347, 116.305966),
        new LatLng(39.982412, 116.308111),
        new LatLng(39.984122, 116.308224),
        new LatLng(39.984955, 116.308099),
        new LatLng(39.984864, 116.305756)
};
PolygonOptions polygonOptions = new PolygonOptions();
//连接封闭图形的点
  polygonOptions.add(latLngs);
//添加多边形
Polygon polygon = tencentMap.addPolygon(polygonOptions );

2.设置多边形属性:

   //填充颜色
   polygon.setFillColor(getResources().getColor(R.color.strokeColor));
   //边线颜色
   polygon.setStrokeColor(getResources().getColor(R.color.colorPrimary));
   //边线宽度
   polygon.setStrokeWidth(6);
   //设置多边形镂空(镂空描边与多边形外轮廓样式一致,镂空点串之间不允许相交,且点串需在多边形内部)
   polygon.setHolePoints(latList);


3.多边形虚线:

设置多边形边框有虚线和点两种方式

方式一:

    //设置ARGB虚线的样式,与 texture(BitmapDescriptor) 互斥
    polygonOptions.pattern(list);

方式二:

   //设置纹理图片
   polygonOptions.texture(BitmapDescriptorFactory.fromAsset("color_point_texture.png"));
   //纹理间隔
   polygonOptions.textureSpacing(30);

4.多边形面积计算:

   double area = TencentMapUtils.calculateArea(Arrays.asList(latLngs));

5.移除多边形:

   polygon.remove();

6.绘制的多边形效果如下图所示:




圆形

圆形是由 Circle 类定义的封闭曲线,在腾讯地图构造一个圆形需要确定它的圆心和半径。

圆的实例化需要一个 CircleOptions 对象,该对象是创建圆的参数类,可以设置圆心坐标、半径、描边的宽度和颜色、圆的填充颜色、层级、可见性、可点击性等属性。
添加圆返回的是一个 Circle 对象,该队形是在地图上画圆的类,可以通过它修改圆的属性。

1.设置圆的基础属性:

  //添加圆
  LatLng latLng = new LatLng(39.984059,116.307771);
  circleOptions = new CircleOptions().
    // 圆心
    center(latLng).
    // 半径,单位:米
    radius(1000d).
    // 圆的填充色
    fillColor(0xff0000ff).
    // 描边的颜色
    strokeColor(0xff000000).
    // 描边宽度
    strokeWidth(15).
    // 可点击性
    clickable(false).
    // 可见性
    visible(true).
    // 层级
    zIndex(2)
  circle = tencentMap.addCircle(circleOptions);

  // 将地图视野移动到多边形所在区域,指定了经纬度和缩放级别
  tencentMap.moveCamera(CameraUpdateFactory
                .newLatLngZoom(new LatLng(39.984059,116.307771), 10));

  // 设置圆的填充色
  circle.setFillColor(0xFFFF0000);

  // 移除圆
  circle.remove();

2.设置圆的描边类型:
描边分为三种:实线描边(默认)、方块描边、圆点描边

//方块描边
circleOptions.borderType(CircleOptions.CircleBorderType.DOTTEDLINE_SQUARE)
//圆点描边
circleOptions.borderType(CircleOptions.CircleBorderType.DOTTEDLINE_CIRCLE)

绘制的圆效果如下图所示:



注意点

1.设置纹理图片(texture(BitmapDescriptor texture)),这个纹理会重复的绘填充到线上,同时用户应配置纹理间隔 textureSpacing(int),与strokeColor(int)、pattern(List)两个配置互斥,这三个接口最后调用的会生效

本页内容