3

任何人都知道,如果有一種方法來放置在XML StreetViewPanoramaView?我有地圖碎片已經和正在覆蓋最重要的是一個觀點,但它看起來像每當我在XML使用com.google.android.gms.maps.StreetViewPanoramaView和我MapFragment打電話onStreetViewPanoramaReady,我從來沒有得到初始化響應我的全景。安卓:在XML使用StreetViewPanoramaView

每一個例子,我可以找到在GitHub上,並從谷歌似乎在代碼中創建視圖,然後將其連接到一個活動。最後我想創建與我MapFragment設置的選項代碼StreetViewPanoramaView,但還是沒能得到回調。如果我使用一個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"/> 

+0

是怎樣的一個整體活動要點不對的代碼?任何錯誤?空指針異常? MapFragment - 你的意思是,你在這個類中擴展com.google.android.gms.maps.MapFragment? –

+1

我延長MapFragment這個類,是的。我發佈的代碼很好,工作。我正在做的是使用StreetViewPanoramicView而不是片段。 –

+0

看看我上一版的答案,我創建了簡單的要點 –

回答

6

添加此視圖佈局

<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

+1

真棒,它是onCreate部分爲我失蹤的觀點。你的代碼片段工作完美。謝謝。 –