示例中心
功能在线体验
控制台

高德 开发 Android 地图SDK 开发指南 在地图上绘制 绘制面

更新时间:2018年03月27日

地图上的面分为圆形和多边形两种。

绘制圆

圆形由 Circle 类定义实现,构造一个圆形需要确定它的圆心和半径,具体的示例代码如下:


LatLng latLng = new LatLng(39.984059,116.307771);
circle = AMap.addCircle(new CircleOptions().
        center(latLng).
        radius(1000).
        fillColor(Color.argb(progress, 1, 1, 1)).
        strokeColor(Color.argb(progress, 1, 1, 1)).
        strokeWidth(15));

上面的代码定义该圆形的填充灰色,边线颜色为灰色,宽度15 像素,效果如下图:

绘制多边形

多边形是由 Polygon 类定义的一组在地图上的封闭线段组成的图形,它由一组 LatLng 点按照传入顺序连接而成的封闭图形。与绘制线类似,面的属性操作集中在 PolygonOptions 中。

绘制椭圆

下面的代码展示了添加一个椭圆形的方法:

aMap.addPolygon(new PolygonOptions()
                .addAll(createRectangle( new LatLng(31.238068, 121.501654), 1, 1))
                .fillColor(Color.LTGRAY).strokeColor(Color.RED).strokeWidth(1));
        PolygonOptions options = new PolygonOptions();
        int numPoints = 400;
        float semiHorizontalAxis = 5f;
        float semiVerticalAxis = 2.5f;
        double phase = 2 * Math.PI / numPoints;
        for (int i = 0; i <= numPoints; i++) {
            options.add(new LatLng(Constants.BEIJING.latitude
                    + semiVerticalAxis * Math.sin(i * phase),
                    Constants.BEIJING.longitude + semiHorizontalAxis
                            * Math.cos(i * phase)));
        }
        // 绘制一个椭圆
        polygon = aMap.addPolygon(options.strokeWidth(25)
                .strokeColor(Color.argb(50, 1, 1, 1))
                .fillColor(Color.argb(50, 1, 1, 1)));
    }


绘制长方形

以下是生成长方形四个顶点坐标列表的方法,可以简便的生成出长方形的四个顶点:

/**
   * 生成一个长方形的四个坐标点
   */
  private List<LatLng> createRectangle(LatLng center, double halfWidth,
      double halfHeight) {
    List<LatLng> latLngs = new ArrayList<LatLng>();
    latLngs.add(new LatLng(center.latitude - halfHeight, center.longitude - halfWidth));
    latLngs.add(new LatLng(center.latitude - halfHeight, center.longitude + halfWidth));
    latLngs.add(new LatLng(center.latitude + halfHeight, center.longitude + halfWidth));
    latLngs.add(new LatLng(center.latitude + halfHeight, center.longitude - halfWidth));
    return latLngs;
  }
}

以下代码用于绘制一个长方形:

// 绘制一个长方形
aMap.addPolygon(new PolygonOptions()
.addAll(createRectangle(Constants.SHANGHAI, 1, 1))
.fillColor(Color.LTGRAY).strokeColor(Color.RED).strokeWidth(1));


绘制不规则多边形

以5边形为例:


// 定义多边形的5个点点坐标
LatLng latLng1 = new LatLng(42.742467, 79.842785);
LatLng latLng2 = new LatLng(43.893433, 98.124035);
LatLng latLng3 = new LatLng(33.058738, 101.463879);
LatLng latLng4 = new LatLng(25.873426, 95.838879);
LatLng latLng5 = new LatLng(30.8214661, 78.788097);

// 声明 多边形参数对象
PolygonOptions polygonOptions = new PolygonOptions();
// 添加 多边形的每个顶点(顺序添加)
polygonOptions.add(latLng1, latLng2, latLng3, latLng4, latLng5);
polygonOptions.strokeWidth(15) // 多边形的边框
.strokeColor(Color.argb(50, 1, 1, 1)) // 边框颜色
.fillColor(Color.argb(1, 1, 1, 1));   // 多边形的填充色

效果如下图:

其余多边形的绘制可参考官方地图示例

示例中心 功能
在线体验
常见问题