StreetViewPanorama()。getLocation()结果不一致?

时间:2016-03-03 20:23:12

标签: android google-maps

我的目的是显示片段是否有要展示的内容,如果没有,则隐藏它。

我的问题是,给定相同的坐标:

  • 首次尝试时,mStreetView.getStreetViewPanorama().getLocation()具有非空响应并显示视图。但是,Fragment为黑色(空白)。
  • 第二次尝试时,mStreetView.getStreetViewPanorama().getLocation()的响应为空,视图保持隐藏状态。

我的代码:

mStreetView.getView().setVisibility(View.GONE);
mStreetView.getStreetViewPanorama().setPosition(customMarker.getPosition());
if (mStreetView.getStreetViewPanorama().getLocation() != null && 
        mStreetView.getStreetViewPanorama().getLocation().links != null) {
    mStreetView.getView().setVisibility(View.VISIBLE);
}

我不确定如何调试这个。在我看来,结果不应该像这样变化,特别是因为,即使它具有非空结果,结果(显然)没有有效值来允许显示某些东西。

编辑:

此坐标按预期运行,并显示正确填充的视图:33.6645598,-111.9253126

此坐标显示视图,但它是黑色,然后返回null:33.6492448,-111.9354228

这些结果是一致的。

EDIT2:

我尝试使用OnStreetViewPanoramaReadyCallback(),但结果是一样的。

现在代码:

mStreetView.getView().setVisibility(View.GONE);
mStreetView.getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback() {
    @Override
    public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
        streetViewPanorama.setPosition(customMarker.getPosition());
        if (streetViewPanorama.getLocation() != null && streetViewPanorama.getLocation().links != null) {
            mStreetView.getView().setVisibility(View.VISIBLE);
        }
    }
});

2 个答案:

答案 0 :(得分:0)

在我的一个旧项目中发现,如果您尝试过早访问该位置,则存在竞争条件

我所做的是设置一个处理程序并在1000毫秒后发布延迟的可运行的火灾,然后检查位置。这样做可以提供一致的结果。

我不知道这是否仍然是当前的行为,但你可以阅读我在这里做的事情

Android StreetView check if there is any view for given location

修改

现在似乎有一个onStreetViewPanoramaReady回调,您使用的是吗?

答案 1 :(得分:0)

如果在创建视图之前使用'getLocation()',它将返回null。建议等到视图创建完毕。此外,您必须create a callback告知您街景何时准备就绪。

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

}
})