我使用该代码在 map 中显示当前位置:
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 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 次。 试试这个。
关于java - 谷歌地图缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146340/