我正在使用 xamarin studio 示例中的此代码在我的项目中显示 google maps android 版本 2:
_mapFragment = SupportFragmentManager.FindFragmentByTag("map") as SupportMapFragment;
if (_mapFragment == null)
{
GoogleMapOptions mapOptions = new GoogleMapOptions()
.InvokeMapType(GoogleMap.MapTypeSatellite)
.InvokeZoomControlsEnabled(false)
.InvokeCompassEnabled(true);
FragmentTransaction fragTx = SupportFragmentManager.BeginTransaction();
_mapFragment = SupportMapFragment.NewInstance(mapOptions);
fragTx.Add(Resource.Id.googleMap , _mapFragment, "map");
fragTx.Commit();
}
这是我的布局
<FrameLayout
android:id="@+id/googleMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
但它总是返回null。
我也运行 xamrin 的示例。虽然它以前工作正常。但现在它不起作用。没有错误或异常。只是_mapFragment
为空。
这可能是从哪里来的?
编辑
我将布局代码更改为:
<fragment
android:id="@+id/googleMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
和第一行代码:
_mapFragment = SupportFragmentManager.FindFragmentById (Resource .Id.googleMap ) as SupportMapFragment;
现在,FragmentManager
not 返回 null。但是尚未加载地图,但该片段是一个白页,并且没有缩小和放大作品。
我使用此代码获取地图,但地图片段返回null
:
private void SetupMapIfNeeded()
{
if (mapView == null)
{
mapView = _mapFragment.Map;
if (mapView != null)
{
mapView .MapType =1;
mapView .MyLocationEnabled = true ;
}
}
}