Нарисуйте многоугольник на карте + Android - PullRequest
1 голос
/ 07 апреля 2011

Я хочу нарисовать многоугольник на виде карты. Это похоже на то, что у меня есть n чисел GeoPoints, и затем, используя эти геопоинты, я хочу нарисовать многоугольник с n вершинами.

спасибо !!

Обновление:

благодаря freza, теперь я знаю, как нарисовать оверлей.

В оверлейном классе есть еще одна функция: public boolean onTap(GeoPoint p, MapView mapView). Теперь, когда я хочу, чтобы пользователь нажал на любое наложение, я хочу изменить изображение наложения.

Например, изначально я нарисовал простой зеленый круг для отображения наложения. Так что теперь, когда пользователь нажимает на это зеленое наложение: я хочу изменить цвет на красный или нарисовать новое растровое изображение на месте, если зеленый круг. Как я могу это сделать?

1 Ответ

0 голосов
/ 31 октября 2012

Это может помочь вам.код следует:

          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();
}
...