Получить текущее местоположение пользователя и определить его в Google maps - PullRequest
1 голос
/ 06 марта 2012

Я хочу спросить вас: я использую Google Maps в своем приложении, и когда я открываю активность, в которой есть карта, я хочу определить текущее местоположение пользователя, я использую этот код для получения текущего местоположения пользователя

         public void locat ()
        {
       //Use the LocationManager class to obtain GPS locations 

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

        LocationListener mlocListener = new MyLocationListener();


        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);


        }


        // Class My Location Listener 

        public class MyLocationListener implements LocationListener

        {

        @Override

        public void onLocationChanged(Location loc)

        {

        loc.getLatitude();

        loc.getLongitude();

        String Text = "My current location is: " + "Latitud = " + loc.getLatitude() +"Longitud = " + loc.getLongitude();


        Toast.makeText( getApplicationContext(),

        Text,

        Toast.LENGTH_SHORT).show();

        }


        @Override

        public void onProviderDisabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();

        }


        @Override

        public void onProviderEnabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

        }


        @Override

        public void onStatusChanged(String provider, int status, Bundle extras)

        {


        }

        }// End of Class MyLocationListener */

но это просто даст мне широту и долготу, а это не то, что я хочу! Я хочу определить текущее местоположение пользователя в Google Maps! Как я могу это сделать? Вам нужен мой код в Google MAps? Пожалуйста, пожалуйста, помогите мне! СПАСИБО

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

Если я правильно понимаю ваш вопрос, вы хотите узнать текущую позицию пользователей и показать ее на карте.У вас есть значения широты и долготы, все, что вам нужно сделать, это построить GeoPoint и анимировать эту позицию на карте.Вы также можете добавить пользовательское наложение на карту при желании.Должно помочь что-то вроде следующего.

double lat = location.getLatitude();
double longi = location.getLongitude();
long time = location.getTime();
GeoPoint currentGeo = new GeoPoint(toMicroDegrees(lat), toMicroDegrees(longi));
MapController controller = map.getController();
controller.animateTo(currentGeo);
2 голосов
/ 06 марта 2012

Вы фактически никогда не передаете информацию на карту для отображения местоположения.

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

Затем получитеКонтроллер вида карты и установите местоположение пользователей как центр / анимация их местоположения.

Что-то похожее на это:

mapView1 = (MapView) this.findViewById(R.id.map);
MapController mapControl = mapView1.getController();
GeoPoint geo = new GeoPoint((int)(lat)*1e6), (int(long*1e6));
mapControl.animateTo(geo);

Эта ссылка должна помочь http://mobiforge.com/developing/story/using-google-maps-android

2 голосов
/ 06 марта 2012

Вы можете открыть карты Google с гео URI, как это:

    String url = "geo:48.200927,16.369548,192";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);

Редактировать: Похоже, вы хотите обратное геокодирование. Вот пример:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);

Вот документация для андроид класса Geocoder - http://developer.android.com/reference/android/location/Geocoder.html

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