2013-01-24 5 views
1

Я использую Google Maps для Android v2. Я хотел бы отобразить текущее местоположение пользователя и увеличить его. Вот код в FragmentActivity:Отображение текущего текущего местоположения пользователя

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_activity); 

    mMap = ((SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.mapFragment_mapActivity)).getMap(); 
    if (mMap == null) { 
     Toast.makeText(this, R.string.mapCreationProblem, Toast.LENGTH_LONG) 
       .show(); 
     finish(); 
     return; 
    } 
    mMap.setMyLocationEnabled(true); 
    Location currentLocation = mMap.getMyLocation(); 
    if(currentLocation!=null){ 
     LatLng currentCoordinates = new LatLng(
          currentLocation.getLatitude(), 
          currentLocation.getLongitude()); 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentCoordinates, 10)); 
    } 
} 

Карта работает отлично, а также синяя точка на текущих работ местоположения. Но, похоже, currentLocation всегда имеет значение null. Поэтому я не могу увеличить текущее местоположение.

Любой, кто знает, почему, пожалуйста?

ответ

8

Вот реализация getMyLocation() с дополнительной защитой для нахождения местоположения людей. Я просто имею это в деятельности, которая управляет фрагментом карты.

private Location getMyLocation() { 
    // Get location from GPS if it's available 
    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

    // Location wasn't found, check the next most accurate place for the current location 
    if (myLocation == null) { 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
     // Finds a provider that matches the criteria 
     String provider = lm.getBestProvider(criteria, true); 
     // Use the provider to get the last known location 
     myLocation = lm.getLastKnownLocation(provider); 
    } 

    return myLocation; 
} 

Спасибо, DMan

+0

Большое спасибо! –

+0

@ DanieleVitali Рад, что я мог бы помочь! – DMCApps

+0

все еще получение null. Однако мое текущее местоположение показано на карте –

1

Попробуйте использовать LocationManager:

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
Location currentLocation = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
+0

Да, я думал об этом. Но я хотел бы знать, почему getMyLocation() возвращает null. –

+1

@ DanieleVitali по внешнему виду этого http://stackoverflow.com/a/13830598/845038 уже есть сообщения об этом, которые постоянно возвращают null. Менеджер местоположений кажется вашим лучшим выбором. Я опубликовал мою реализацию getMyLocation(), которая в основном такая же, как и выше, с небольшим отказом. – DMCApps

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