如何检查街景是否可用

时间:2014-05-28 10:51:25

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

我正在使用谷歌地图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
            }
        });

2 个答案:

答案 0 :(得分:0)

简单易用

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

答案 1 :(得分:0)

您可以使用街景元数据。如果它返回标记位置的pano_id,则应该不错。使用它需要一个API密钥,但不使用任何积分。 另一方面,当Google今年早些时候更改其云价格时,StreetView全景图的使用成本变得非常昂贵。因此,除非您肯定要使用它,否则不要实例化它。

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