[英]Google maps zoom level
我正在使用该代码在地图上显示当前位置:
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));
}
}
如果几秒钟后我将其放大,则缩放级别返回到其起始位置。 我知道这是因为我的听众中使用了zoom(15),但是是否有可能不这样做呢? 如果使用将放大并开始行走,我不想失去缩放级别
在类中创建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次。 尝试这个。
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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.