如何在xamarin android的地图片段中叠加谷歌地方自动完成片段?

时间:2017-03-30 13:25:23

标签: xamarin.android

我在Xamarin安卓工作,我想在google地图片段中显示谷歌地方自动完成片段,我使用下面的代码但是它收到错误,有人可以帮忙解决这个问题吗?

  

Android.Views.InflateException:二进制XML文件行#1:错误   膨胀类片段

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:map="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment
        android:id="@+id/googlemap"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment">
        <fragment
            android:id="@+id/place_autocomplete_fragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment" />
    </fragment>
</LinearLayout>




namespace test
{
    [Activity(Label = "CommuteX", MainLauncher = true, Icon = "@mipmap/icon", Theme = "@android:style/Theme.Holo.Light.NoActionBar.Fullscreen")]
    public class MainActivity : FragmentActivity, IOnMapReadyCallback, IPlaceSelectionListener, IOnConnectionFailedListener
    {
        private GoogleMap GMap;

        public void OnConnectionFailed(ConnectionResult result)
        {
            throw new NotImplementedException();
        }

        public void OnError(Statuses status)
        {
            Log.Info("xamarin", "An error occurred: " + status);
        }

        public void OnMapReady(GoogleMap googleMap)
        {
            this.GMap = googleMap;
            LatLng latlng = new LatLng(Convert.ToDouble(12.733027), Convert.ToDouble(77.83016));
            CameraUpdate camera = CameraUpdateFactory.NewLatLngZoom(latlng, 15);
            GMap.MoveCamera(camera);
            MarkerOptions options = new MarkerOptions().SetPosition(latlng).SetTitle("Hosur");
            GMap.AddMarker(options);
        }

        public void OnPlaceSelected(IPlace place)
        {
            var placeadd = place.AddressFormatted;
            var placename = place.NameFormatted;
            var namadd = placename + "," + placeadd;
            var latlng = place.LatLng;
            Log.Info("xamarin", "Place: " + namadd);
        }

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            SetUpMap();
            var mGoogleApiClient = new GoogleApiClient
               .Builder(this)
               .AddApi(PlacesClass.GEO_DATA_API)
               .AddApi(PlacesClass.PLACE_DETECTION_API)
               .EnableAutoManage(this, this)
               .Build();
            PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)FragmentManager.FindFragmentById(Resource.Id.place_autocomplete_fragment);

            autocompleteFragment.SetOnPlaceSelectedListener(this);
        }
        private void SetUpMap()
        {
            if (GMap == null)
            {
                FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);
            }
        }
    }
}

0 个答案:

没有答案