Android: использование StreetViewPanoramaView в XML

Кто-нибудь знает, есть ли способ разместить StreetViewPanoramaView в XML? У меня уже есть фрагмент карты и накладываю сверху поверх него, но он выглядит, когда я использую com.google.android.gms.maps.StreetViewPanoramaView в XML и вызываю onStreetViewPanoramaReady в своем MapFragment, я никогда не получаю ответ для инициализации Моя Панорама.

Каждый пример, который я могу найти в GitHub и Google, кажется, создает представление в коде, а затем присоединяет его к активности. В итоге я попытался создать StreetViewPanoramaView в коде с параметрами, установленными в моем MapFragment, но все равно не смог получить обратный вызов. Если я использую StreetViewPanoramaFragment, я могу получить панораму в порядке через обратный вызов и могу заниматься тем, что я пытаюсь сделать, но я действительно не хочу встраивать StreetViewPanoramaFragment в качестве наложения на MapFragment, если я могу его избежать.

Что работает для меня прямо сейчас в моем MapFragment:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup parent = (ViewGroup) super.onCreateView( inflater, container, savedInstanceState ); View overlay = inflater.inflate( R.layout.view_map_overlay, parent, false ); mIndoorSelector = (SeekBar) overlay.findViewById( R.id.indoor_level_selector ); mIndoorMinLevel = (TextView) overlay.findViewById( R.id.indoor_min_level ); mIndoorMaxLevel = (TextView) overlay.findViewById( R.id.indoor_max_level ); parent.addView(overlay); hideFloorLevelSelector(); mPanoramaFragment = (StreetViewPanoramaFragment) getActivity().getFragmentManager().findFragmentById( R.id.steet_view_panorama ); mPanoramaFragment.getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback() { @Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { mPanorama = streetViewPanorama; showStreetView( new LatLng( 40.7506, -73.9936 ) ); } }); return parent; } 

XML-файл:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/indoor_min_level" android:text="0" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:padding="4dp" android:textSize="20sp" android:gravity="center" android:textColor="@android:color/white" /> <SeekBar android:id="@+id/indoor_level_selector" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="8" /> <TextView android:id="@+id/indoor_max_level" android:text="10" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:padding="4dp" android:textSize="20sp" android:textColor="@android:color/white" android:gravity="center" /> </LinearLayout> <fragment android:id="@+id/steet_view_panorama" android:layout_width="match_parent" android:layout_height="240dp" android:layout_alignParentBottom="true" class="com.google.android.gms.maps.StreetViewPanoramaFragment"/> 

Добавьте этот вид в макет

 <com.google.android.gms.maps.StreetViewPanoramaView android:id="@+id/steet_view_panorama" android:layout_width="match_parent" android:layout_height="match_parent"/> 

И в onCreateView

 mStreetViewPanoramaView = (StreetViewPanoramaView) findViewById(R.id.steet_view_panorama); mStreetViewPanoramaView.onCreate(savedInstanceState); mStreetViewPanoramaView.getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback() { @Override public void onStreetViewPanoramaReady(StreetViewPanorama panorama) { panorama.setPosition(new LatLng(55.758818, 37.620587)); mPanorama = panorama; } }); 

Не забудьте переслать методы жизненного цикла в это представление, в соответствии с https://developers.google.com/android/reference/com/google/android/gms/maps/StreetViewPanoramaView

Вот суть с целым Управлением с StreetViewPanoramaView https://gist.github.com/pengrad/bfe2588a9730779db6fb

Intereting Posts