Android Google映射如何使用fillColor绘制复杂多边形

时间:2017-01-18 14:03:04

标签: java android google-maps google-maps-api-2

我试图在谷歌地图上绘制自由形状到现在为止我可以成功绘制折线和多边形,感谢@Chintan Khetiya在draw free hand polygon in Google map V2 in AndroidDraw a path on maps的回复,但当我尝试绘制多边形如下图像然后“ polygonOptions.fillColor(颜色)”我尝试将点转换为两个多边形,但它也可以工作任何身体建议或喜欢分享任何提示或更好的解决方案使用谷歌地图多边形绘制填充颜色的自由手形状。

polygon with colid

这是我如何绘制多边形

fram_map.setOnTouchListener(new View.OnTouchListener() {     
   @Override
    public boolean onTouch(View v, MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        int x_co = Math.round(x);
        int y_co = Math.round(y);

        projection = mMap.getProjection();
        Point x_y_points = new Point(x_co, y_co);

        LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
        latitude = latLng.latitude;

        longitude = latLng.longitude;

        int eventaction = event.getAction();
        switch (eventaction) {
            case MotionEvent.ACTION_DOWN:
                // finger touches the screen
                val.add(new LatLng(latitude, longitude));

            case MotionEvent.ACTION_MOVE:
                // finger moves on the screen
                val.add(new LatLng(latitude, longitude));

            case MotionEvent.ACTION_UP:
                // finger leaves the screen
                Draw_Map();
                break;
        }

        if (Is_MAP_Moveable == true) {
            return true;

        } else {
            return false;
        }
    }
});

public void Draw_Map() {
    rectOptions = new PolygonOptions();
    rectOptions.addAll(val);
    rectOptions.strokeColor(Color.BLUE);
    rectOptions.strokeWidth(7);
    rectOptions.fillColor(Color.CYAN);
    polygon = mMap.addPolygon(rectOptions);
}

“zillow real estate android app”

中使用了类似的功能

1 个答案:

答案 0 :(得分:1)

当多边形文档(https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polygon)显示在提供的示例中时,您应该将形状设置关闭为最后一个LatLng第一个的副本。

因此,您应该编辑您的侦听器,添加对执行ACTION_DOWN时获得的LatLng的引用,并且当您执行ACTION_UP时,您必须插入一个新的LatLng,其中包含与之前引用的点相同的坐标。

快乐的编码!