Intereting Posts
Запуск Android Development: родной или кросс-платформенный? Основной класс активности не найден, если реализует GooglePlayServicesClient.ConnectionCallbacks / OnConnectionFailedListener RecyclerView findViewHolder null для элементов вне экрана Использование цели Crop Получение java.lang.SecurityException: невозможно найти приложение для вызывающего android.app.ApplicationThreadProxy@4266ae80 Понимание того, как использовать класс OverScroller Как удалить элементы меню фрагмента стоп-кадра? Скрытие заголовка панели действий не работает в старых версиях Android (с помощью ActionBarSherlock) Безопасность резьбы при повторении через ArrayList с использованием foreach Как включать и выключать автоматическую яркость? (Не повторение) Как обнаружить утечку памяти MediaStore.EXTRA_OUTPUT отображает данные в нуле, другой способ сохранить фотографии? На вкладках TabHost на вкладке Android во время использования аппаратной клавиатуры Android – Как добавить нижнюю (сфокусированную) границу для поворота? Обратные вызовы удаленных служб Android Android использует Gradle Build в качестве кода, например if

Используйте метод .GetMapAsync вместо .getMap с сервисами Google Play (Xamarin)

Таким образом, старый код работает отлично:

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); } 

Но теперь, когда .Map устарел и устарел, я должен использовать .GetMapAsync в некотором роде:

 theMap = googleMap.GetMapAsync (IOnMapReadyCallback); 

Но я не понимаю, как это сделать.

Кто-нибудь может мне помочь?

Solutions Collecting From Web of "Используйте метод .GetMapAsync вместо .getMap с сервисами Google Play (Xamarin)"

Класс фрагмента карты должен реализовывать OnMapReadyCallback и переопределять onMapReady() :

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

В вашем onCreateView используйте getMapAsync() для установки обратного вызова на фрагмент:

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

Все, что вам нужно для реализации карт Google V2, приведено здесь: https://developers.google.com/maps/documentation/android/map

Это может быть поздно ответить на ваш вопрос, но может помочь кому-то еще с той же проблемой. GetMapAsync () ожидает реализацию объекта обратного вызова типа IOnMapReadyCallback.

Подробнее читайте здесь в моей записи в блоге: 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); } } 

Теперь вызовите экземпляр GetMapAsync () и экземпляр карты действия Action Action при успешной инициализации карты.

  //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; } 

См. Следующее:

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

Надеюсь, что это поможет вам.

Если вы хотите использовать представление вместо фрагмента карты, это реализация, которую я применил, чтобы получить этот переход от проекта, который использовал предыдущую версию игровых сервисов. Обновлено до 9.6.0, чтобы соответствовать новым FCM и вызвало проблемы в наших фрагментах карты.

 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; } 

И в вашем фрагменте:

 <?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> 

Важно отметить следующие разрешения для вашего манифеста:

 <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" /> 

Я смог достичь этой установки без каких-либо ошибок API 23 и следующих библиотек на моей Gradle:

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

Надеюсь это поможет!

Это определенно работает в NAVIGATION_DRAWER ACTIVITY WITH FRAGMENT MAP

Запустите прораммму, добавив это в Топ

  SupportMapFragment supportMapFragment; 

ДОБАВЛЯЙТЕ ЭТО В СОКРАЩЕНИИ МЕТОДА ()

 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(); 

Это будет работать цыпленок