Как правильно использовать drawMyLocation - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь показать текущее местоположение пользователей с синей точкой по умолчанию в Android. На моей странице карт у меня также есть макет, который показывает различные достопримечательности. У меня проблемы с выяснением, что нужно указать для некоторых переменных, и мне было интересно, может ли кто-нибудь мне помочь.

Это то, что я использую до сих пор, чтобы показать свое местоположение.

    Location location = locationManager
                    .getLastKnownLocation(bestProvider);
            try {

                GeoPoint myPoint2 = new GeoPoint(
                        (int) (location.getLatitude() * 1E6),
                        (int) (location.getLongitude() * 1E6));
                newoverlay.drawMyLocation(null, mapView, location, myPoint2,
                        1000);
                mapOverlays.add(newoverlay);
            } catch (NullPointerException e) {
                GeoPoint myPoint2 = new GeoPoint((int) (-1 * 1E6),
                        (int) (-1 * 1E6));
                **newoverlay.drawMyLocation(null, mapView, location, myPoint2,
                        1000);**
                mapOverlays.add(newoverlay);
            }

Я не уверен, что поместить в качестве Canvas, поэтому я поместил его в null, чтобы он компилировался. Я использую местоположение из менеджера местоположений, и у меня есть геопоинт из переменной местоположения. Я также не уверен, каким должен быть параметр «когда».

Мне также было интересно, как синий пузырь знает, как двигаться с человеком, обновляется ли изображение каждые x миллисекунд в зависимости от параметра «когда»?

Пока приложение не падает, но оно также не показывает синюю точку в любом месте. Я уверен, что мне просто нужна помощь в поиске того, каким должен быть параметр canvas.

Спасибо

1 Ответ

1 голос
/ 01 сентября 2011

попробуйте так в вашей карте деятельности

class CurOverlay extends Overlay {
        private GeoPoint pointToDraw;

        public void setPointToDraw(GeoPoint point) {
            pointToDraw = point;
        }

        public GeoPoint getPointToDraw() {
            return pointToDraw;
        }

        @Override
        public boolean draw(Canvas canvas, MapView curmapView, boolean shadow,
                long when) {
            super.draw(canvas, curmapView, shadow);

            // convert point to pixels
            Point screenPts = new Point();
            curmapView.getProjection().toPixels(pointToDraw, screenPts);

            // add marker
            Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                    R.drawable.pinsource);
            canvas.drawBitmap(bmp, screenPts.x - 28, screenPts.y - 48, null);
            return true;
        }

    }

я надеюсь, что это будет работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...