在mapview + android上绘制一个多边形

时间:2011-04-07 12:11:32

标签: android google-maps android-mapview draw

我想在地图视图上绘制一个多边形。就像,我有n个GeoPoints,然后使用那些地理位置,我想画一个有n个顶点的多边形。

谢谢!

更新

感谢freza,现在我知道如何绘制叠加层。

在叠加层下有另一个函数:public boolean onTap(GeoPoint p, MapView mapView)。现在我想要的是当用户点击任何叠加层时,我想要更改叠加层的图像。

例如,最初我画了一个简单的绿色圆圈来显示叠加层。所以现在当用户点击绿色叠加时:我想将颜色更改为红色,或者如果是绿色圆圈,则绘制新的位图。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

这可以帮到你。 代码如下:

          private void changeMarkers(int noteIndex) {
    for (int i = 0; i < noteOverlays.size(); i++) {
        if (i == noteIndex || noteIndex == -1) {
            Drawable selectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map);
            int selectedMarkerWidth = selectedMarker.getIntrinsicWidth();
            int selectedMarkerHeight = selectedMarker.getIntrinsicHeight();
            selectedMarker.setBounds(-selectedMarkerWidth / 2,
                    -selectedMarkerHeight, selectedMarkerWidth / 2, 0);         noteOverlays.getItem(i).setMarker(selectedMarker);
        } else {
            Drawable unselectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map_notselected);
            int nonSelectedMarkerWidth = unselectedMarker
                    .getIntrinsicWidth();
            int nonSelectedMarkerHeight = unselectedMarker
                    .getIntrinsicHeight();
            unselectedMarker
                    .setBounds(-nonSelectedMarkerWidth / 2,
                            -nonSelectedMarkerHeight,
                            nonSelectedMarkerWidth / 2, 0);
            noteOverlays.getItem(i).setMarker(unselectedMarker);
        }
    }
    mapView.invalidate();
}