Verwenden Sie .GetMapAsync stattdessen .getMap-Methode mit Google Play Services (Xamarin)

Ein alter Code funktioniert auf diese Weise einwandfrei:

LatLng location = new LatLng (myClass.myLocation.Latitude, myClass.myLocation.Longitude); CameraPosition.Builder builder = CameraPosition.InvokeBuilder (); builder.Target (location); builder.Zoom (18); CameraPosition cameraPosition = builder.Build (); MapsInitializer.Initialize (this); CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition (cameraPosition); MapFragment googleMap = FragmentManager.FindFragmentById<MapFragment> (Resource.Id.map); theMap = googleMap.Map; if (theMap != null) { theMap.MapType = GoogleMap.MapTypeNormal; theMap.MoveCamera (cameraUpdate); } 

Aber jetzt, da die .Map veraltet und veraltet ist, muss ich .GetMapAsync in irgendeiner Weise verwenden:

 theMap = googleMap.GetMapAsync (IOnMapReadyCallback); 

Aber ich verstehe nicht wie

Es gibt jemanden, der mir helfen kann?

  • Die Anwendung konnte nicht gestartet werden
  • Fehler beim Erstellen von Xamarin.Android-Projekt mit Google Play Services
  • Xamarin sider.dll fehlt
  • Android - Korrekte Verwendung von invalidateOptionsMenu ()
  • So stellen Sie die ContentPage-Orientierung in Xamarin.Forms ein
  • Daten von einer Aktivität zur anderen in Xamarin.Android übergeben
  • Benutzerdefiniertes Thema in Android / Xamarin Projekt - Mitte Titeltext der Aktionsleiste
  • Wie ändere ich die Farbe eines ausgewählten Elements auf einer ListView?
  • 5 Solutions collect form web for “Verwenden Sie .GetMapAsync stattdessen .getMap-Methode mit Google Play Services (Xamarin)”

    Ihre Kartenfragmentklasse muss OnMapReadyCallback implementieren und onMapReady() überschreiben:

     @Override public void onMapReady(final GoogleMap map) { this.map = map; map.setMyLocationEnabled(true); } 

    In Ihrem onCreateView verwenden Sie getMapAsync() , um den Rückruf auf dem Fragment getMapAsync() :

     MapFragment mapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); 

    Alles, was Sie brauchen, um die Google Maps V2 zu implementieren, ist hier: https://developers.google.com/maps/documentation/android/map

    Dies könnte spät antworten auf Ihre Frage, aber kann für jemand anderes mit dem gleichen Problem hilfreich sein. GetMapAsync () erwartet die Implementierung des Rückrufobjekts vom Typ IOnMapReadyCallback.

    Hier finden Sie weitere Details in meinem Blog-Eintrag: http://appliedcodelog.com/2015/08/androidgmsmapsmapfragmentmap-is.html

      //OnMapReadyClass public class OnMapReadyClass :Java.Lang.Object,IOnMapReadyCallback { public GoogleMap Map { get; private set; } public event Action<GoogleMap> MapReadyAction; public void OnMapReady (GoogleMap googleMap) { Map = googleMap; if ( MapReadyAction != null ) MapReadyAction (Map); } } 

    Jetzt rufen Sie die GetMapAsync () – und Event-Action-Return-Map-Instanz bei erfolgreicher Map-Initialisierung auf.

      //MyActivityClass.cs GoogleMap map; bool SetUpGoogleMap() { if(null != map ) return false; var frag = FragmentManager.FindFragmentById<mapfragment>(Resource.Id.map); var mapReadyCallback = new OnMapReadyClass(); mapReadyCallback.MapReadyAction += delegate(GoogleMap googleMap ) { map=googleMap; }; frag.GetMapAsync(mapReadyCallback); return true; } 

    Bitte sehen Sie dies:

     public class MapActivity : Activity, IOnMapReadyCallback { public void OnMapReady(GoogleMap googleMap) { if (googleMap != null) { //Map is ready for use } } } 

    Hoffe das wird dir helfen

    Wenn Sie eine Ansicht anstelle eines Kartenfragments verwenden möchten, ist die Implementierung, die ich angewendet habe, um diesen Übergang von einem Projekt zu erhalten, das eine vorherige Play-Service-Version verwendet hat. Aktualisiert auf 9.6.0, um neue FCM einzuhalten und Probleme in unseren Kartenfragmenten zu verursachen.

     private MapView mapView; private GoogleMap mMap; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // inflate and return the layout // inflate and return the layout View v = inflater.inflate(R.layout.mapFragment, container, false); mapView = (MapView) v.findViewById(R.id.map); mapView.onCreate(savedInstanceState); mapView.onResume(); mapView.getMapAsync(this); return v; } @Override public void onMapReady(GoogleMap map) { mMap = map; } 

    Und in deinem Fragment:

     <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/Sismos" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical" > <com.google.android.gms.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> 

    Wichtig ist, die folgenden Berechtigungen für Ihr Manifest zu beachten:

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

    Ich konnte dieses Setup ohne irgendwelche Fehler auf API 23 und die folgenden libs auf meiner Gradle zu erreichen:

     compile 'com.google.android.gms:play-services:9.6.0' compile 'com.google.android.gms:play-services-maps:9.6.0' 

    Hoffe das hilft!

    Das ist definitiv in NAVIGATION_DRAWER AKTIVITÄT MIT FRAGMENTKARTE

    Führen Sie Ihr Prorramm, indem Sie dies in Top

      SupportMapFragment supportMapFragment; 

    HINZUFÜGEN DIESES IN ON CREATE METDOD ()

     supportMapFragment = SupportMapFragment.newInstance(); FragmentManager fm = getFragmentManager(); fm.beginTransaction().replace(R.id.maplayout, new` `MapFragmentClass()).commit();` supportMapFragment.getMapAsync(this); android.support.v4.app.FragmentManager sfm = getSupportFragmentManager(); sfm.beginTransaction().add(R.id.map,supportMapFragment).commit(); 

    Das wird es küken

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.