Intereting Posts
Отправить трансляцию по уведомлению нажмите Фотографирование в андроиде каждые 5 секунд Как настроить диспетчер аварийных сигналов для каждого из них в определенный день недели и времени в Android? Android datepicker min max дата до уровня АИП 11 RxJava: ошибка при попытке распространения ошибки на Observer.onError Почему RecyclerView.notifyItemChanged () создаст новый ViewHolder и использует как старый ViewHolder, так и новый? Как получить адрес электронной почты пользователя, используя Parse Facebook для Android- Как сопоставить список списков с RecyclerView Локальный виджет блокировки блокировки Android: AdWhirl не может найти AdMobAdapter Звук уведомления не воспроизводится, когда экран устройства заблокирован Ошибка андроидной камеры Попытка вызвать виртуальный метод 'void android.support.v4.view.ViewPager.setAdapter (android.support.v4.view.PagerAdapter)' на ссылку нулевого объекта Где вы устанавливаете путь класса в плагине cordova cli build Асинхронная андроида с потокованием

Используйте метод .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); 

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

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

Класс фрагмента карты должен реализовывать 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(); 

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