Android街景检查给定位置是否有任何视图

Android街景检查给定位置是否有任何视图,android,google-street-view,Android,Google Street View,我只是在玩Google Play Services 4.4 for Android()的新街景功能,我想知道是否有任何方法/可能性来检查任何给定位置是否有“视图”或foto材料。 使用streetViewPanorama.setPosition(SomeLatling)加载街景未覆盖的位置时 我刚得到一个黑屏。 有没有办法事先检查一下 @Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPano

我只是在玩Google Play Services 4.4 for Android()的新街景功能,我想知道是否有任何方法/可能性来检查任何给定位置是否有“视图”或foto材料。 使用
streetViewPanorama.setPosition(SomeLatling)加载街景未覆盖的位置时
我刚得到一个黑屏。
有没有办法事先检查一下

@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
(links是街景图像的数组)为空,则可以安全地说该位置没有街景

从该链接引用

编辑

测试这个方法有一个警告,您必须等待视图创建完成。例如,在
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:

现在有一个回调,您应该使用它来通知streetview何时准备就绪

getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback(){
    @Override
    public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {

    }
})

位置不存在时出现黑屏。只需检查它是否已加载

@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
            }
        }
    });

是的,你是对的,这是我的错误,所以删除我的评论。