Как обновить широту / долготу центра карты при каждом перемещении карты - PullRequest
0 голосов
/ 19 августа 2010

Каков наилучший способ постоянно обновлять центр широты и долготы mapView в приложении для Android?

Мне нужно отобразить его на ярлыке, который показан в верхней части карты. Я знаю, что вы можете позвонить MapViewObject.getMapCenter(), чтобы получить GeoPoint в центре карты, но куда бы я поместил этот код, чтобы он вызывался каждый раз, когда пользователь перемещает карту или увеличивает / уменьшает масштаб?

1 Ответ

1 голос
/ 19 августа 2010

В конце концов я сам ответил на вопрос, добавив вызов к getMapCenter в методе рисования оверлея.

 public MyOverlay(TextView lblCoords) {
        super();
        coordinateLabel = lblCoords;
    }

    @Override
        public void draw(Canvas canvas, MapView mapView, boolean shadow) {
            super.draw(canvas, mapView, shadow);
            currentCenter = mapView.getMapCenter();
            latitude = currentCenter.getLatitudeE6() / 1E6;
            longitude = currentCenter.getLatitudeE6() / 1E6;
            coordinateLabel.setText("lat: " + latitude + " long: " + longitude);
    }

Вы также можете расширить класс MapView и поместить код координат в метод onInterceptTouchEvent, чтобы он обновлялся только тогда, когда пользователь перемещает экран. Это было бы более эффективно, чем помещать его в оверлеи onDraw, потому что onDraw вызывается постоянно.

...