我有一個地圖v2在FrameLayout。如果我不用代碼對它進行動畫處理,它會以通常的方式響應觸摸/輕掃/捏動事件。如果在onLocationChanged()調用之後爲其設置動畫,攝像機會移動並縮放,但地圖會停止響應用戶輸入(或者至少是這種感覺)。你滑動但地圖不平移。你捏,但地圖不縮放。你點擊...你明白了。Android谷歌地圖v2不能平移/縮放滑動/捏
但是我偶然發現有些事情正在發生,但由於某種原因沒有顯示。例如,如果我滑動,地圖不會移動,但會以某種方式記錄滑動。如果我觸摸主頁按鈕,將系統帶回主屏幕,然後再次將應用程序放在前臺,我可以看到我的地圖處於平移位置,可以進行最遠的縮放,沒有任何我最終添加的標記。似乎滑動手勢被以lat = 0,lng = 0爲中心的疊加不可見地圖捕捉並應用於該地圖,現在看起來該地圖是正在顯示的地圖。
除了使用各種斷點,很明顯在我的活動中沒有創建任何其他地圖,更不用說透明和重疊的地圖了...我的描述只是爲了讓你明白髮生了什麼,我並不是說實際上有另外一張地圖。
這裏是代碼中的相關片段,如果你需要更多的,只是問:
我的onCreate()
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.map_activity);
}
我在onStart()是:
@Override
protected void onStart()
{
super.onStart();
// Create the LocationRequest object
mLocationRequest = LocationRequest.create();
// Use high accuracy
mLocationRequest.setPriority(
LocationRequest.PRIORITY_HIGH_ACCURACY);
// Set the update interval to 5 seconds
mLocationRequest.setInterval(UPDATE_INTERVAL);
// Set the fastest update interval to 1 second
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationClient = new LocationClient(this, this, this);
mLocationClient.connect();
}
@Override
public void onConnected(Bundle arg0)
{
mLocationClient.requestLocationUpdates(mLocationRequest, this);
}
和我onLocationChanged()是
@Override
public void onLocationChanged(Location loc)
{
if (mMap == null)
{
mapFragment = SupportMapFragment.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
fragmentTransaction.add(R.id.mapcontainer, mapFragment);
fragmentTransaction.commit();
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.getUiSettings().setAllGesturesEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
mMap.setMyLocationEnabled(false);
LatLng location = new LatLng(loc.getLatitude(), loc.getLongitude());
CameraPosition pos = new CameraPosition.Builder().target(location).zoom(12).build();
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(pos);
mMap.animateCamera(cu);
if (mLocationClient.isConnected())
mLocationClient.removeLocationUpdates(this);
mLocationClient.disconnect();
Log.e(getClass().getSimpleName(), "lat = " + location.latitude + " long = " + location.longitude);
}
}
請注意,我推遲了地圖配置,直到第一個onLocationChanged()事件,否則地圖拒絕爲請求位置設置動畫(請參閱我的另一個問題:Android: GoogleMap v2 ignores animate/move calls)。
'map_activity.xml'的內容是什麼? –