2012-03-06 3 views
1

i wan, чтобы спросить вас: я использую Google Maps в своем приложении, и когда я открываю действие, в котором есть карта, я хочу, чтобы текущее местоположение пользователя определялось, я использую этот код, чтобы получить текущее местоположение пользователяПолучить текущее местоположение пользователя и определить его на 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! Как я могу это сделать? вам нужен мой код для google MAPS? Пожалуйста, помогите мне! СПАСИБО ВАМ

+0

Что вы хотите о местоположении? Если вам нужен адрес, улица, штат и т. Д., Вы должны использовать обратное геокодирование. Для этого необходимо использовать Google Maps. – twain249

+0

конвертировать Локатор, Долгота в 'GeoPoint' и добавить использование' MapController' для анимации местоположения на карте –

+0

Я хочу показать пользователю ее местоположение, используя pin! я не хочу latitude или longitude, я просто хочу показать пользователю ее местоположение –

ответ

2

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

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

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

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

+0

нет, я не хочу открывать карты Google, я уже использую API Google, так как я могу получить свое местоположение? –

+0

Я обновил свой ответ. – danielbeard

3

Если я правильно понимаю ваш вопрос вы хотите, чтобы получить текущую позицию пользователей и показать его на карте. У вас есть значения широты и долготы, все, что вам нужно сделать, это построить 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); 
+0

Итак, я заменяю все содержимое в onLocationChanged и помещаю ваш код, но что такое карта? вы имеете в виду MapView? –

+0

не могли бы вы мне помочь? –

+0

К сожалению, карта является всего лишь объектом MapView. – mmoon

2

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

Что вам нужно сделать, так это получить 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

+0

, это дает мне ошибку в этой строке 'GeoPoint geo = new GeoPoint ((int) (lat) * 1e6), (int (long * 1e6));' –

+0

вы можете мне помочь. Большое спасибо –

+0

Извините, но мне не удалён, код следует читать: 'GeoPoint geo = new GeoPoint ((int) (lat * 1e6), (int) (lat * 1e6));' – TStu

Смежные вопросы