Android 安卓谷歌地图v2没有';t滑动/捏动时平移/缩放
我有一个框架布局中的地图v2。如果我不从代码中设置动画,它会以通常的方式响应触摸/滑动/挤压事件。如果我在onLocationChanged()调用后设置它的动画,相机会移动和缩放,但随后贴图会停止响应用户输入(或者至少是这种感觉)。你刷卡,但地图无法平移。你捏了捏,但地图不会缩放。你点击。。。你明白了 然而,我偶然发现有些事情正在发生,但由于某种原因,它并没有被显示出来。例如,如果我刷卡,地图不会移动,但会以某种方式记录刷卡。如果我按下home(主页)按钮,系统将返回主屏幕,然后将应用程序再次带到前台,我可以在平移位置看到我的地图,并尽可能进行最大的缩放,而不需要我之前添加的任何标记。似乎滑动手势被以lat=0、lng=0为中心的重叠不可见地图捕捉并应用于该地图,现在似乎该地图就是正在显示的地图 除此之外,使用各种断点,很明显在我的活动中没有创建任何其他映射,更不用说透明和覆盖的映射了。。。我的描述只是为了让你了解发生了什么,我并不是说在我的上面还有另一张地图 以下是相关代码,如果您需要更多,请询问: 我的onCreate() 我的onStart()是: 我的onLocationChanged()是Android 安卓谷歌地图v2没有';t滑动/捏动时平移/缩放,android,swipe,google-maps-api-2,pinchzoom,Android,Swipe,Google Maps Api 2,Pinchzoom,我有一个框架布局中的地图v2。如果我不从代码中设置动画,它会以通常的方式响应触摸/滑动/挤压事件。如果我在onLocationChanged()调用后设置它的动画,相机会移动和缩放,但随后贴图会停止响应用户输入(或者至少是这种感觉)。你刷卡,但地图无法平移。你捏了捏,但地图不会缩放。你点击。。。你明白了 然而,我偶然发现有些事情正在发生,但由于某种原因,它并没有被显示出来。例如,如果我刷卡,地图不会移动,但会以某种方式记录刷卡。如果我按下home(主页)按钮,系统将返回主屏幕,然后将应用程序再次
请注意,我将贴图配置推迟到第一个onLocationChanged()事件,因为否则贴图拒绝将动画设置到请求的位置(请参阅我的另一个问题:)。您似乎正在向布局中添加两个
SupportMapFragment
s。用户看到的不是与之交互的用户。确保只添加一个片段。map\u activity.xml的内容是什么??您的意思是mapFragment=SupportMapFragment.newInstance()执行了两次吗?如果是这样的话,我肯定不是这样,在那里设置一个断点,它只会停止一次。你就是那个人!!!当然,我只执行了一次mapFragment=SupportMapFragment.newInstance(),但那太频繁了!我已经用xml声明了这个片段…@LucioCrusca这就是为什么我要求map_活动布局。我想我已经知道了。
@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);
}
@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);
}
@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);
}
}