1

我正在尝试通过以下代码使用谷歌地图版本 2:

    public   void setMapData()
    {
        try {
            if (mapView == null && _mapFragment != null)
            {
                mapView = _mapFragment.Map;
                if (mapView != null)
                {
                    CameraPosition currentPlace = new CameraPosition.Builder()
                        .Target (currentProperty.Location)
                            .Bearing (0) 
                            .Zoom (((RPLApp)pshowAct.Application).typeOfShow .PropertyZoomLevel) //apply zoom here
                            .Build ();

                    mapView.AnimateCamera  (CameraUpdateFactory.NewCameraPosition (currentPlace));

                    mapView .Clear ();
                    MarkersHelperClass.DrawMarkerOnLocation (pshowAct , mapView, currentProperty.Location);
                }

            }
        } catch (Exception ex) {
            RltLog .HandleException (ex);
        }
    }

mapView = _mapFragment.Map; 总是返回null。在下面的 url 有一个 java 代码的解决方案,但它不适用于 monodroid。我们如何在 monodroid 或 c# 中使用它?它不适合,因为代码在内部和活动中定义了一个新类。我们如何使它与 C# 语法成为朋友?

https://stackoverflow.com/a/14072348/1939409

4

1 回答 1

0

您在 Google 地图中使用了什么组件?您是否尝试过 Google Play 服务?如何在 xamarin 上使用 android sdk 17 实现 google play 服务

编辑:这是我的布局(Resource.Layout.GoogleMap):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
        <FrameLayout
            android:id="@+id/mapView"
            android:layout_width="fill_parent"
            android:layout_height="match_parent" />
            //other controls
</RelativeLayout>

我的代码:

public class GoogleMapActivity : Android.Support.V4.App.FragmentActivity
{
    private Android.Gms.Maps.GoogleMap _mapView;
    private Android.Gms.Maps.SupportMapFragment _fragment;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.GoogleMap);

        var mapOptions = new Android.Gms.Maps.GoogleMapOptions()
            .InvokeMapType(Android.Gms.Maps.GoogleMap.MapTypeNormal)
            .InvokeZoomControlsEnabled(false)
            .InvokeCompassEnabled(true);

        var fragTx = SupportFragmentManager.BeginTransaction();
        var mapFragment = Android.Gms.Maps.SupportMapFragment.NewInstance(mapOptions);
        fragTx.Add(Resource.Id.mapView, mapFragment, "mapView");
        fragTx.Commit();
    }

    protected override void OnResume()
    {
        base.OnResume();

        _fragment = ((Android.Gms.Maps.SupportMapFragment)SupportFragmentManager.FindFragmentById(Resource.Id.mapView));
        _mapView = _fragment.Map;
    }
}
于 2013-11-11T17:34:01.680 回答