2015-11-24 3 views
0

Я создал активность Android, чтобы показывать Карты Google. Я бы сосредоточил карту на текущей позиции пользователя, но я не могу понять, как это сделать.Центр Карт Google для текущей позиции пользователя

Вот мой текущий код:

Location location = getMyLocation(); 
LatLng userPos = new LatLng(location.getLatitude(), location.getLongitude()); 

map.animateCamera(CameraUpdateFactory.newLatLngZoom(userPos, zoomLevel)); 

CameraPosition cameraPosition = new CameraPosition.Builder() 
            .target(userPos) 
            .zoom(17) 
            .bearing(90) 
            .tilt(40) 
            .build(); 

map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

Источником этого кода это answer (где я скопировал getMyLocation() из) и это solution, но они не работают. В обоих случаях это вообще не работает: центр не установлен, и странно ни один уровень масштабирования не установлен.

Если я использую только этот код (без текущего положения пользователя):

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(42.564241, 12.22759), zoomLevel)); 

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

В чем может быть проблема?

ответ

0

убедитесь, что эти разрешения: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> Затем делают некоторую активность и регистрируют LocationListener

package com.example.location; 

import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.view.View; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.google.android.gms.maps.CameraUpdate; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 

public class LocationActivity extends SherlockFragmentActivity implements 
LocationListener  {  
private GoogleMap map;  
private LocationManager locationManager; 
private static final long MIN_TIME = 400; 
private static final float MIN_DISTANCE = 1000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.map); 
map = ((SupportMapFragment)  
getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

locationManager = (LocationManager) 
getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
MIN_TIME, MIN_DISTANCE, this); //You can also use 
LocationManager.GPS_PROVIDER and LocationManager.PASSIVE_PROVIDER   
} 
@Override 
public void onLocationChanged(Location location) { 
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 10); 
map.animateCamera(cameraUpdate); 
locationManager.removeUpdates(this); 
} 

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

@Override 
public void onProviderEnabled(String provider) { } 

@Override 
public void onProviderDisabled(String provider) { } 
}' 
+0

Да, у меня есть эти разрешения. Скажите, пожалуйста, что не так с моим кодом ... – smartmouse

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