android - eclipse: отображать карты Google, используя координаты, полученные с помощью GPS - PullRequest
2 голосов
/ 08 февраля 2012

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

В настоящее время у меня есть приложение, которое получает местоположение пользователя через gps и обновляет себя каждые 10 метров / 10000 миллисекунд, но в настоящее время все, что он делает, это отображает координаты.Я настроил его для подключения к картам Google, но в данный момент он просто устанавливает карту на некоторые координаты, которые я сам ввел вручную.

Как получить, чтобы карта отображала местоположение на основепо координатам, полученным через gps?

Любая помощь будет принята с благодарностью, я очень новичок во всем этом!

РЕДАКТИРОВАТЬ: вот мой код пока!

package com.android.basicmap;

import com.google.android.maps.MapActivity;
import android.os.Bundle;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

public class BasicMapActivity extends MapActivity {

private MapView mapView;
private MapController mapController;

private LocationManager locationManager;
private LocationListener locationListener;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

    locationListener = new GPSLocationListener();

    locationManager.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 
      0, 
      0, 
      locationListener);

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setStreetView(true);
    mapView.setBuiltInZoomControls(true);

    mapController = mapView.getController();
    mapController.setZoom(16);
}

@Override
protected boolean isRouteDisplayed() {
  return false;
}

private class GPSLocationListener implements LocationListener 
{
  @Override
  public void onLocationChanged(Location location) {
    if (location != null) {
      GeoPoint point = new GeoPoint(
          (int) (location.getLatitude() * 1E6), 
          (int) (location.getLongitude() * 1E6));

      Toast.makeText(getBaseContext(), 
          "Latitude: " + location.getLatitude() + 
          " Longitude: " + location.getLongitude(), 
          Toast.LENGTH_SHORT).show();

      mapController.animateTo(point);
      mapController.setZoom(16);
      mapView.invalidate();
    }
  }


}

}

Ответы [ 4 ]

7 голосов
/ 08 февраля 2012

Вот полный урок по этому вопросу: http://www.codeproject.com/Articles/112044/GPSLocator-App-to-Find-Current-Nearest-Location-us

Но давай, я обнаружил, что, введя "Android, как показать местоположение GPS на карте Google", пожалуйста, Google более тщательно и пройти учебные пособия, прежде чем публиковать такие простые вопросы:)

1 голос
/ 08 февраля 2012

Предполагая, что вы используете MapView, самое простое, что нужно сделать, это добавить экземпляр MyLocationOverlay на карту, так как Android будет обрабатывать отображение местоположения пользователя для вас.

map=(MapView)findViewById(R.id.whatever_your_mapview_id_is);
map.getOverlays().add(new MyLocationOverlay(this, map));

Еслипо какой-то причине вы хотите сделать это самостоятельно, а не использовать встроенное средство, вы можете создать свой собственный ItemizedOverlay для отображения точки и добавить экземпляр собственного настраиваемого наложения в MapView.

0 голосов
/ 09 февраля 2012

Предполагая, что для этого вы определили ваш mapview и mapcontroller

, сначала вам нужно подписаться на обновление местоположения в вашем методе OnCreate следующим образом: приведенный ниже код запрашивает обновление каждые 1000 мс или 10 м

LocationManager lm;
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, this);

ниже вас - мой способ обновить мою позицию на карте

@Override
GeoPoint p,P2, p3;
double lat=53,  double lng=4;
    public void onLocationChanged(Location location) {
        Log.v(tag, "Location Changed");

        lat= (int) (location.getLatitude());
        lng= (int) (location.getLongitude());

        sb = new StringBuilder(512);

        noOfFixes++;

        p = new GeoPoint(
                (int) (location.getLatitude()*1E6), 
              (int) (location.getLongitude()*1E6));
        mapController.animateTo(p);
        mapController.setCenter(p);

        Toast.makeText(this, "Lat= " + lat + " Long= " + lng, Toast.LENGTH_SHORT).show();




    }
0 голосов
/ 08 февраля 2012

Лучше всего использовать MyLocationOverlay, если вы хотите отобразить текущее местоположение пользователя.Однако у вас есть альтернатива:

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