我刚刚使用Google Play Services 4.4 for Android(link)的新StreetView功能,我想知道是否有任何方法/可能性来检查是否有“查看”/ foto任何给定位置的材料。
当我使用streetViewPanorama.setPosition(someLatLng);
加载街景未覆盖的位置时
我只是得到一个黑屏。
有事先检查的方法吗?
答案 0 :(得分:12)
当位置不存在时出现黑屏。只需检查它是否已加载。
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
mPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() {
@Override
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) {
if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) {
// location is present
} else {
// location not available
}
}
});
答案 1 :(得分:8)
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
mPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() {
@Override
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) {
if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) {
// location is present
} else {
// location not available
}
}
});
查看我认为应该这样做的文档
StreetViewPanoramaLocation location = mSvp.getLocation();
if (location != null && location.links != null) {
mSvp.setPosition(location.links[0].panoId);
}
我的理解是,如果location
为空或location.links
(链接是街景图像数组)为空,则可以肯定地说该位置没有街景
从此链接引用
https://developers.google.com/maps/documentation/android/streetview
修改强>
测试这个有一个警告,这个方法,你必须等到视图创建。所以例如在onCreateView
中的片段本身内部进行此操作我将处理器放入1秒延迟以测试该理论。
Handler h = new Handler();
h.postDelayed(new Runnable(){
@Override
public void run() {
StreetViewPanoramaLocation svpl = mSvp.getLocation();
if(svpl == null){
Toast.makeText(getActivity(), "Unable to show Street View at this location", Toast.LENGTH_SHORT).show();
}
}
}, 1000);
如果在创建视图之前尝试使用getLocation()
,它将始终返回null。如果在这些坐标处没有街道视图,则在之后访问它将返回null
编辑2:
现在有一个回调,您应该用它来告诉您街景视图何时准备好
getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback(){
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
}
})