在Android应用中设置GoogleMap

时间:2015-11-08 02:10:43

标签: android google-maps xamarin google-maps-android-api-2

我试图将googlemap添加到我的应用中,但我无法让它发挥作用。 我在xamarin btw上使用ViewPager。 布局:

...
            <fragment
                android:id="@+id/map"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:name="com.google.android.gms.maps.MapFragment" />
...

我的片段:

public class InfoFragment : FragmentV4, IOnMapReadyCallback
{
    private GoogleMap mMap;

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var view = inflater.Inflate(Resource.Layout.InfoFragment, container, false);

        //Set up google maps coords in infos section
        SetUpMap();
        return view;
    }

    private void SetUpMap()
    {
        if (mMap == null) {
            //((MapFragment)FragmentManager.FindFragmentById (Resource.Id.map)).GetMapAsync (this);

            var mapFragment = (SupportMapFragment)Activity.SupportFragmentManager.FindFragmentById(Resource.Id.map);

            mapFragment.GetMapAsync(this);
        }
    }

    //Launching of the actual map
    public void OnMapReady (GoogleMap googleMap)
    {

        //Setup cords and stuff...
    }
}

在我的地图设置过程中。当我做的时候

var mapFragment = (SupportMapFragment)Activity.SupportFragmentManager.FindFragmentById(Resource.Id.map);

它总是返回null。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

发现了问题

android:name="com.google.android.gms.maps.MapFragment" />

应该是:

android:name="com.google.android.gms.maps.SupportMapFragment" />

在我的片段中而不是:

var mapFragment = (SupportMapFragment)Activity.SupportFragmentManager.FindFragmentById(Resource.Id.map);

            mapFragment.GetMapAsync(this);

它应该是:

((SupportMapFragment)ChildFragmentManager.FindFragmentById(Resource.Id.map)).GetMapAsync(this);