我正在尝试使用 Google 地图引擎在 android 中使用不规则多边形覆盖地图上的一个区域。
这是我正在测试的示例代码...覆盖 Overlay 类的 draw 方法。
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
long when) {
ArrayList<GeoPoint> points = new ArrayList<GeoPoint>();
points.add(getPoint(40.69601721120307,-7.975247972597344));
points.add(getPoint(39.59209428101375,-5.602198679879018));
points.add(getPoint(37.98114679179523,-5.43877491468928 ));
points.add(getPoint(39.01059159609532,-4.050442951443798));
points.add(getPoint(37.99556954318146,-1.728440918734253));
points.add(getPoint(39.26565517073047,-2.576421100521262));
points.add(getPoint(40.21994329403012,-1.164105822610836));
points.add(getPoint(40.57540056971796,-3.415060042751821));
points.add(getPoint(42.5081775151286,-4.553753858729792));
points.add(getPoint(40.74284989396188,-5.388244948956315));
points.add(getPoint(40.69601721120307,-7.975247972597344));
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setStyle(Style.STROKE);
mPaint.setStrokeWidth(2);
Point point1 = null;
Path path = new Path();
for(GeoPoint p : points){
Point point2 = new Point();
mapView.getProjection().toPixels(p, point2);
if(point1 != null){
path.lineTo(point2.x, point2.y);
canvas.drawPath(path, mPaint);
mapView.getProjection().toPixels(p, point1);
} else {
point1 = new Point();
mapView.getProjection().toPixels(p, point1);
path.moveTo(point1.x, point1.y);
}
}
return true;
}
当我运行测试时,我可以在地图上看到这个结果:
但是,当我将样式更改为 Style.STROKE_FILL 或 Style.FILL 时,我会在地图上看到以下内容:
我在论坛中找不到解决此问题的方法。
我将不胜感激任何帮助。
谢谢。