【问题标题】:How to check is streetview is available on location如何查看现场是否有街景
【发布时间】:2014-05-28 10:51:24
【问题描述】:

我正在使用 Google Maps Android SDK,并试图确定某个位置是否有街景全景图。

描述该功能:“如果用户单击地图标记并且该位置具有全景图,则显示全景图,否则只需将地图缩放到标记位置)

如果该位置没有全景,我宁愿不创建 SupportStreetViewPanoramaFragment。 即使我创建它,我认为唯一可能的方法是调用 setOnStreetViewPanoramaChangeListener 然后调用 setPosition 并检查侦听器上的全景 id ... 出于某种原因,没有调用监听器,但我还没有尝试修复它,因为无论如何感觉太麻烦了。

这里有什么优雅的解决方案吗?

我也希望(坚持)避免通过以下链接调用 JavaScript API v3:https://developers.google.com/maps/documentation/javascript/reference#StreetViewService

var latLng = new google.maps.LatLng(lat, lon);
        streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
            if (status === google.maps.StreetViewStatus.OK) {
                //ok
            } else {
                //no ok
            }
        });

【问题讨论】:

  • 我也想检查一下。我正在尝试您的上述代码。我得到 streetViewService 无法解决。如何制作 streetViewService 的对象。请帮忙
  • 确保您使用的是最新的 Google Play 服务
  • 是的,它是最新的

标签: android google-maps-android-api-2 android-maps-v2


【解决方案1】:

简单易行

@Override
        public void onStreetViewPanoramaReady(final StreetViewPanorama streetViewPanorama) {
            streetView = streetViewPanorama;
            streetViewPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() {
                @Override
                public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) {
                    if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) {
                        streetView = streetViewPanorama;
                        streetViewPanorama.setPosition(new LatLng(36.0579667, -112.1430996));
                        StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
                                .bearing(180)
                                .build();
                        streetViewPanorama.animateTo(camera, 100);
                    } else {
                        Toast.makeText(StreetView_Panorama.this, "location not available", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }

【讨论】:

    【解决方案2】:

    您可以使用街景元数据。如果它为您的标记位置返回 pano_id,那么您应该很好。使用它需要一个 API 密钥,但它不使用积分。 另一方面,当谷歌今年早些时候改变他们的云定价时,街景全景图的使用变得非常昂贵。所以甚至不要实例化一个,除非你肯定会使用它。

    https://developers.google.com/maps/documentation/streetview/metadata

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多