我正在使用该代码在地图中显示当前位置:
GoogleMap googleMap;
public static Location mLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_maps);
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
googleMap = fm.getMap();
googleMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
mLocation = location;
displayCurrentLocation();
}
});
}
public void displayCurrentLocation() {
CameraPosition cameraPosition = new CameraPosition.Builder().
target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
zoom(15).
bearing(0).
build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
如果我在几秒钟后放大缩放,则返回到它的起始位置。我知道这是因为我的听众的缩放(15),但有没有可能不这样做?如果使用将放大并将开始行走我不想失去我的缩放级别
答案 0 :(得分:2)
在类
中创建一个String数据成员String loadLocation="notDone"
onMyLocationChange 中的
mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
mLocation = location;
if(loadLocation.equals("notDone")){
displayCurrentLocation();
}
}
});
在displayCurrentLocation方法
中 public void displayCurrentLocation(){
CameraPosition cameraPosition = new CameraPosition.Builder().
target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
tilt(60).
zoom(15).
bearing(0).
build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
loadLocation="done";
}
现在这个方法displayCurrentLocation()只调用一次,当地图画面打开时。 试试这个。
答案 1 :(得分:1)
public void displayCurrentLocation() {
float zoom = map.getCameraPosition().zoom;
CameraPosition cameraPosition = new CameraPosition.Builder().
target(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).
zoom(zoom ).
bearing(0).
build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}