Как изменить значок наложения в классе MapView для Android? - PullRequest
1 голос
/ 05 сентября 2011

Я работаю над картой в Android с несколькими наложенными значками, покрывающими ее. Моя проблема заключается в том, что значок каждого наложения является статическим и не изменяется с остальной частью карты при увеличении и уменьшении масштаба. Это может стать неудобным, если пользователь увеличивает или уменьшает изображение, а значки кажутся слишком большими или слишком маленькими.

Мое решение - создать несколько файлов изображений с разными размерами каждого значка. Однако я не уверен, как ссылаться на эти значки из моего (расширенного) класса MapView после того, как я уже создал их из моего:

public class Map extends MapActivity {
    ...
    public onCreate() {
        ...
        //Very simplified copy of my working code:

        Drawable defaultDrawable = this.getResources().getDrawable(R.drawable.myicon);
        List<Overlay> mapOverlays = mapView.getOverlays();
        ItemizedOverlay overlayManager = new OverlayManager(defaultDrawable, this);
        OverlayItem myOverlay =  new OverlayItem(...);
        overlayManager.addOverlay(myOverlay);
    }
}

Я расширил класс MapView, чтобы можно было запускать события масштабирования. В методе dispatchDraw() я планирую разместить свой код замены значков, но я не уверен, как отсюда получить доступ к существующим наложениям карты и их значкам (и изменить просто их значков):

public class ZoomSensitiveMapView extends MapView {

    private int oldZoomLevel;

    ...

    public void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        if (getZoomLevel() != oldZoomLevel) {

            if (getZoomLevel() > 15) {
                //Zoomed in closer
                //Replace icons with bigger copies
            }
            else {
                //Zoomed out further
                //Replace icons with smaller copies
            }
            oldZoomLevel = getZoomLevel();
        }
    }
}

Я думал, что getOverlays() может работать здесь, но это, похоже, возвращает только сами наложения, а не их значки.

Я на правильном пути? Как я могу заменить иконки без корректировки их координат наложения и т. Д.? Любая помощь или рекомендации будут с благодарностью здесь! (Надеюсь, мои объяснения достаточно ясны; если что-то не так, пожалуйста, попросите меня уточнить!) Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 сентября 2011

здесь вы можете изменить строку ::

Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);

, просто поместите свой собственный значок в папку для рисования и обновите его с помощью

Drawable drawable = this.getResources().getDrawable(R.drawable.yourIcon);

Для получения дополнительной информации :: получите отсюда

...