asc*_*sco 4 android google-street-view
我正在玩Android版Google Play Services 4.4的新StreetView功能(链接),我想知道是否有任何方法/可能性来检查是否有任何给定位置的'view'/ foto材料.当我加载一个未被StreetView覆盖的位置时,streetViewPanorama.setPosition(someLatLng);
我只得到一个黑屏.有事先检查吗?
小智 13
当位置不存在时出现黑屏.只需检查它是否已加载.
@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
}
}
});
Run Code Online (Sandbox Code Playgroud)
@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
}
}
});
Run Code Online (Sandbox Code Playgroud)
看文档我相信这应该做到
StreetViewPanoramaLocation location = mSvp.getLocation();
if (location != null && location.links != null) {
mSvp.setPosition(location.links[0].panoId);
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果location为null或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);
Run Code Online (Sandbox Code Playgroud)
如果您尝试getLocation()在创建视图之前使用它,它将始终返回null.如果在这些坐标处没有街道视图,则在之后访问它将返回null
编辑2:
现在有一个回调,你应该用它来告诉你街景什么时候准备就绪
getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback(){
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2991 次 |
| 最近记录: |