1

我正在使用 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;

现在,FragmentManagernot 返回 null。但是尚未加载地图,但该片段是一个白页,并且没有缩小和放大作品。

我使用此代码获取地图,但地图片段返回null

private void SetupMapIfNeeded()
    {
        if (mapView == null)
        {
            mapView = _mapFragment.Map;
            if (mapView != null)
            {
                mapView .MapType =1;
                mapView .MyLocationEnabled = true ;

            }
        }
    }
4

2 回答 2

0

也许钥匙不正确。您可以尝试以下操作:

  • 确保您使用正确的数据包名称,如下所示
  • 允许在清单上使用互联网

于 2013-05-23T08:17:59.287 回答
0

对于你的第二个问题:

现在,FragmentManager 不返回 null。但是尚未加载地图,但该片段是一个白页,并且没有缩小和放大作品。

此问题通常源自引用google-play-service库中的问题。看看我写的这篇关于如何在你的应用程序中集成谷歌地图的博文,尤其是前 3 个步骤:

谷歌地图 API V2

造成这种情况的另一个原因可能是您没有正确配置 Google API 控制台,所以我建议您也看看这个指南:

谷歌地图 API V2 密钥

可能导致这种情况的另一个原因是,如果您在清单文件中的权限存在某种问题。您也可以查看第一个指南以获取所需的权限。

于 2013-05-23T07:13:20.640 回答