我正在使用新的地图api。工作正常.. 但是当设备方向改变时......地图变得反应迟钝。我的意思是地图不会对用户的反应作出反应。
当我将地图片段嵌入到布局xml中时,不会发生这个问题。但只有在我尝试在Activity的onCreate中的布局容器中添加mapfragment时才会发生。
任何人都可以告诉我这个问题。
这是我添加地图的方式
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity" >
<FrameLayout
android:id="@+id/activity_home_fragment_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true">
</FrameLayout>
</RelativeLayout>
在Activity的oncreate中
mMapFragment = new SupportMapFragment();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.activity_home_fragment_container, mMapFragment,
"MAP_FRAGMENT");
transaction.commit();
答案 0 :(得分:2)
在布局中使用此功能
<LinearLayout
android:id="@+id/map_container2"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_weight="35.22"
android:orientation="horizontal" >
<fragment
android:id="@+id/map1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraTargetLat="40.72"
map:cameraTargetLng="-74.00"
map:cameraZoom="8" />
</LinearLayout>
这段代码:
onCreate{
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// TODO Auto-generated method stub
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map1))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
// TODO Auto-generated method stub
// Hide the zoom controls as the button panel will cover it.
mUiSettings = mMap.getUiSettings();
// Enables/disables zoom gestures (i.e., double tap, pinch & stretch).
mMap.getUiSettings().setZoomGesturesEnabled(false);
// Enables/disables scroll gestures (i.e. panning the map).
mMap.getUiSettings().setScrollGesturesEnabled(false);
// Enables/disables the compass (icon in the top left that indicates the orientation of the
// map).
mMap.getUiSettings().setCompassEnabled(false);
// Add lots of markers to the map.
addMarkersToMap();
// Pan to see all markers in view.
// Cannot zoom to bounds until the map has a size.
final View mapView = getSupportFragmentManager().findFragmentById(R.id.map1).getView();
if (mapView.getViewTreeObserver().isAlive()) {
mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressLint("NewApi") // We check which build version we are using.
@Override
public void onGlobalLayout() {
LatLngBounds bounds = new LatLngBounds.Builder()
.include(WOODS)
.build();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
}
});
}
}
private void addMarkersToMap() {
// TODO Auto-generated method stub
// Uses a colored icon.
mWoods = mMap.addMarker(new MarkerOptions()
.position(WOODS)
.title("Woods")
.snippet("R. Quatá, 1016, Vila Olimpia - (11) 3849-6868")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
}
答案 1 :(得分:0)
我的猜测是,如果您在Fragment
Activity's
中添加onCreate()
而未检查是否savedInstanceState == null
,那么您最终会添加两个(或更多)SupportMapFragments
一个在另一个上,这导致了这种影响。