我的应用有一个标题活动和一些儿童活动,其中一个主要是谷歌地图屏幕。
我最近为应用用户添加了一个选项,可以选择将地图置于用户位置的中心位置(使用droid设备GPS或类似功能)。
问题是,一旦选择了这个,然后取消选择,它仍然以正确的位置为中心,然后在几秒钟内改变它们的物理位置。
任何想法如何防止这种情况发生?
@Override
public void onCreate(Bundle savedInstanceState) {
...
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60L, (float) 100.0, onLocationChange);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60L, (float) 100.0, onLocationChange);
provider = locationManager.getBestProvider(criteria, false);
location = locationManager.getLastKnownLocation(provider);
settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
location = locationManager.getLastKnownLocation(provider);
}
public void onStop() {
super.onStop();
locationManager.removeUpdates(onLocationChange);
if (timer != null) {
timer.cancel();
}
}
@Override
public void onRestart() {
super.onRestart();
settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
...
location = locationManager.getLastKnownLocation(provider);
}
答案 0 :(得分:0)
看起来我是我自己最大的敌人。
问题是我在
中设置了位置LocationListener onLocationChange=new LocationListener() {
public void onLocationChanged(Location location) {
setMapCentre(location.getLatitude(), location.getLongitude());
map.getController().setZoom(13 + zoomModifier);
}
修复只是添加一些逻辑来测试用户是否想要居中并缩放到他们的位置。
LocationListener onLocationChange=new LocationListener() {
public void onLocationChanged(Location location) {
if (zoomtown.equals(" zoomme")) {
setMapCentre(location.getLatitude(), location.getLongitude());
map.getController().setZoom(13 + zoomModifier);
}
}