Android:在 XML 中使用 StreetViewPanoramaView
Android: Using StreetViewPanoramaView in XML
有人知道是否有办法在 XML 中放置 StreetViewPanoramaView 吗?我已经有一个地图片段并在其上叠加了一个视图,但看起来每当我在 XML 中使用 com.google.android.gms.maps.StreetViewPanoramaView 并在我的 MapFragment 中调用 onStreetViewPanoramaReady 时,我从未收到初始化我的全景图的响应.
我在 GitHub 和 Google 上找到的每个示例似乎都是在代码中创建视图,然后将其附加到 activity。我最终尝试使用我的 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"/>
将此视图添加到您的布局中
<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
,不要忘记将生命周期方法转发到此视图
这里有一个要点,其中包含整个 Activity 和 StreetViewPanoramaView
https://gist.github.com/pengrad/bfe2588a9730779db6fb
有人知道是否有办法在 XML 中放置 StreetViewPanoramaView 吗?我已经有一个地图片段并在其上叠加了一个视图,但看起来每当我在 XML 中使用 com.google.android.gms.maps.StreetViewPanoramaView 并在我的 MapFragment 中调用 onStreetViewPanoramaReady 时,我从未收到初始化我的全景图的响应.
我在 GitHub 和 Google 上找到的每个示例似乎都是在代码中创建视图,然后将其附加到 activity。我最终尝试使用我的 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"/>
将此视图添加到您的布局中
<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
,不要忘记将生命周期方法转发到此视图这里有一个要点,其中包含整个 Activity 和 StreetViewPanoramaView https://gist.github.com/pengrad/bfe2588a9730779db6fb