2013-07-03 4 views
0

Добрый день,Android показать местоположение на Google Maps создать

на данный момент я создаю Android приложение, которое будет отображаться пользователю их текущее местоположение на карте. К сожалению, я не могу изменить масштаб текущего местоположения пользователя в методе OnCreate. Кажется, он работает в методе OnMapClick.

Я хотел бы избавиться от метода OnMapClick и показать текущее местоположение пользователя при загрузке карты.

ниже код является частью OnCreate методы класса карты

Settings setting = new Settings(); 
    setting.saveSettings(Maps.this); 
    LocationManager locationManager =(LocationManager) getSystemService(Context.LOCATION_SERVICE); 

Вот код из OnLocationChanged метода

public void onLocationChanged(Location location) { 
    int lat = (int)(location.getLatitude()); 
    int lng =(int)(location.getLongitude()); 
    LatLng loc = new LatLng(lat,lng); 
    myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(loc, 15)); 
    myMap.animateCamera(CameraUpdateFactory.zoomIn()); 

I обладает ключом API и иметь карту в моем заявление.

ответ

1

Этот код может помочь вам ...

мой слушатель

частный LocationListener слушатель = новый LocationListener() {

@Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
    } 

    @Override 
    public void onLocationChanged(Location loc) { 
    // will get the location lat long 
    } 
}; 

код для запуска местоположения слушателя обновления менеджера

LocationManager mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     if (mLocationManager != null) { 
      Criteria criteria = new Criteria(); 
      criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
      String prividerName = mLocationManager.getBestProvider(criteria, true); 
      if (prividerName != null) { 
       mLocationManager.requestLocationUpdates(prividerName, 30 * 1000, 0, listener); 

После того, как вы получите широту/долготу и можно построить детали местоположение, как показано ниже

GoogleMap googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
      R.id.map)).getMap(); 
LatLng current = new LatLng(mUserLatitude, mUserLongitude); 
googleMap.addMarker(new MarkerOptions().position(current).title("Current Location")) 
      .showInfoWindow(); 
googleMap.getUiSettings().setCompassEnabled(true); 
googleMap.getUiSettings().setZoomControlsEnabled(true); 
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(current, 10)); 
+0

Что было бы правильным способом получить широту и долготу, чтобы заставить образец работать? – user2405235

+0

сделал код помог вам ... –

+0

Здравствуйте @ krian777, к сожалению, я до сих пор не могу получить текущие gps coördinates при загрузке карты. Пожалуйста, проверьте мое сообщение ниже. – user2405235

0

Вы, вероятно, не исправить на месте еще. Я предложил бы делать

myMap.setMyLocationEnabled(true); 
myMap.setOnMyLocationChangeListener(this); 

тогда в вас onLocationChanged положить булево для первой загрузки или что-то такое, что не идет на место каждый раз меняет свое местоположение, а затем сделать движение камеры в там

0

I надеюсь, что этот фрагмент кода может помочь уяснить мой вопрос.

код ниже мой LocationListener

private LocationListener listener = new LocationListener() { 
     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onLocationChanged(Location loc) { 
      double lat = loc.getLatitude(); 
      double lng = loc.getLongitude(); 


     } 
    }; 

широта и долгота ары, сохраненные в antoher класса, ниже код показывает мой путь initialzing карты.

String locLat = ((Settings)this.getApplication()).getLat(); 
    String locLng = ((Settings) this.getApplication()).getLng(); 
    double DlocLat = Double.parseDouble(locLat); 
    double DlocLng = Double.parseDouble(locLng); 

    myMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
    LatLng current = new LatLng(DlocLat,DlocLng); 
    myMap.addMarker(new MarkerOptions().position(current).title("Current Location")).showInfoWindow(); 
    myMap.setMyLocationEnabled(true);//show the location on the map 
    myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);//show the regular google maps 
    myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(current, 10)); 
Смежные вопросы