Android: настройка местоположения пользователя на карте Google - PullRequest
0 голосов
/ 14 августа 2011

Я только что выполнил действие в своем приложении, которое показывает карту пользователю. как я могу указать местоположение пользователя на этой карте? немного запутался в этом, поэтому любая помощь будет оценена!

ТАКЖЕ: когда я настраивал карту, мне приходилось включать: MapView mapView = (MapView) findViewById (R.id.mapview); Почему вы должны включить это, потому что у вас его еще нет: setContentView (R.layout.main) ;? - звучит как идиотский вопрос, но я просто удивился!

Ответы [ 2 ]

1 голос
/ 14 августа 2011

Я бы предложил использовать MyLocationOverlay. Это позволит получить текущее местоположение пользователя и отобразить его на карте через синюю точку. Вы можете сделать это с помощью чего-то вроде:

List<Overlay> overlays = mMaps.getOverlays();
overlays.clear();

MyLocationOverlay myLocOverlay = new MyLocationOverlay(this, mMaps);
myLocOverlay.enableMyLocation();
overlays.add(myLocOverlay);
myLocOverlay.runOnFirstFix(new Runnable() { public void run() {
    mMaps.getController().animateTo(myLocOverlay.getMyLocation());
}});
0 голосов
/ 14 августа 2011

Вот пример кода, который делает эту работу. Краткое описание: сначала вы получаете locationService для определения местоположения, а затем с помощью Criteria api вы позволяете системе выбирать лучшего поставщика в соответствии с вашими настройками в Criteria, затем вы получаете поставщика, запрашиваете обновления местоположения у поставщика и внедряете интерфейс LocationListener, также кешируется последнее местоположение, которое вы можете вызовите getLastKnownLocation, но я не буду рассчитывать, что это может привести к устаревшим или нулевым результатам

        String contenxt = Context.LOCATION_SERVICE;
        locationManager = (LocationManager) getSystemService(contenxt);

        /*
         * trying to get the best provider
         * with given conditions
         */
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setCostAllowed(true);
        criteria.setSpeedRequired(false);
        criteria.setBearingRequired(false);
        criteria.setPowerRequirement(Criteria.POWER_LOW);

        String provider = locationManager.getBestProvider(criteria, true);
        Log.d(GAL, provider);

        locationManager.requestLocationUpdates(provider, 3000, 30, locationListener);
        location = locationManager.getLastKnownLocation(provider);

Примечание: не забудьте реализовать Location Listener

Ответ на примечание: вы не включаете mapView с помощью findViewById (R.id.mapView), который уже включен в ваш xml и в ваш макет. Вы просто получаете ссылку на mapView для использования встроенных методов, таких как setZoom, animateTo и т. Д.

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