2014-05-21 45 views
4

我只是玩Android的谷歌播放服务4.4新的StreetView功能(link),我想知道是否有任何方法/可能性检查是否有任何给定位置的“视图”/照片材料。 当我加载一个未被StreetView覆盖的位置时,我只会看到一个黑屏。 任何方法事先检查?Android StreetView检查是否有给定位置的任何视图

回答

9
@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(链接为街景图像阵列)为null,则它是安全的,说有在该位置

没有街道视图从这个链接

引用

编辑

测试了这一点,有一个警告这种方法,你必须等待,直到视图已创建。所以例如在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) { 

    } 
}) 

https://developers.google.com/android/reference/com/google/android/gms/maps/StreetViewPanoramaView.html#getStreetViewPanoramaAsync(com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback)

+0

对我不起作用 –

9

当位置不存在时会出现黑屏。只要检查它是否被加载。

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

这是正确答案。 –

+0

是的,你是对的,这是我的错误,所以删除我的意见。 – orchidrudra

相关问题