【问题标题】:How to tell if a Streetview exists before launching Streetview intent如何在启动街景 Intent 之前判断街景是否存在
【发布时间】:2010-10-05 16:16:35
【问题描述】:

为某个位置启动街景 Intent 并不能保证该位置存在街景。如果街景不存在,用户只会看到旋转的黑屏。有没有办法在启动街景意图之前以编程方式检查它是否存在?

【问题讨论】:

  • 查看 Web API 的功能,对 pano 数据的查询要么返回数据属性,要么返回一个空的全景图。示例: 有效:cbk0.google.com/… 无效:cbk0.google.com/… 是否应该只用它来验证它是否存在?

标签: android google-street-view


【解决方案1】:

PackageManager and queryIntentActivities() 与您的Intent 一起使用。如果您返回一个包含 0 个匹配活动的列表,则您知道设备上的任何内容都不会处理您的请求。

【讨论】:

  • 这不会让我知道在给定位置是否有可用的实际全景图,对吧?据我所知,它只会告诉我 StreetView 活动是否存在。在具有 StreetView 活动的设备上,我最终会出现黑屏和一个微调器,它没有给出任何迹象表明该地理点存在全景图。尽管如此,Streetvew 活动仍然可以正确启动。在通过 Intent 启动 Activity 之前,我可以查询上面的 URL 以发现数据确实存在。没有 streetViewExists(Geopoint p) 还是有这样的功能?
  • @Osmund:哎呀,对不起,我以为你关心的是街景本身是否可用。无法确定街景是否存在。
【解决方案2】:

一种方法是使用 Google Street View Image API 检查 Google Street View 是否存在。

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

当特定坐标的街景存在时,它会返回一个文件大小不同的图像,而不是不存在时

http://maps.googleapis.com/maps/api/streetview?size=400x400&location=40.720032,%20-73.988354&fov=90&heading=235&pitch=10&sensor=false

您可以比较这些图像并检查它是否存在。

【讨论】:

  • 好主意!更好的是,使用 connection.setRequestMethod("HEAD") 并测试 connection.getHeaderField("Content-Length")。交换的数据更少。
  • @shreks7 如果街景不适用于任何坐标,并且我们要求此文件大小=600x800 甚至此 600x440。 ,然后google API根据请求的图像返回不同的大小。
  • @shreks7 我们如何在启动街景之前识别全景图是否退出,如果全景图不可用,我只看到一个区别,然后 API 会返回一个小于 10 KB 的文件。
【解决方案3】:

我没有检查过 Android API,但是对于 JavaScript API,有一个带有 getPanoramaByLocation 方法的 StreetViewService 类。如果该位置没有街景,则返回 NO_RESULTS。

【讨论】:

  • 不幸的是android API没有这样的指示。
【解决方案4】:

我会给你一个我的解决方案的 sn-p,用于检查我的 googe image api 街景图像集成中是否存在街景 - 猜你也可以将 StreetViewStatus.Ok 布尔值用于普通街景。

  streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
            if (status === google.maps.StreetViewStatus.OK) {
                var img = document.createElement("IMG");
                img.src = 'http://maps.googleapis.com/maps/api/streetview?size=160x205&location='+ lat +','+ lng  +'&sensor=false&key=AIzaSyC_OXsfB8-03ZXcslwOiN9EXSLZgwRy94s';
                var oldImg = document.getElementById('streetViewImage');
                document.getElementById('streetViewContainerShow').replaceChild(img, streetViewImage);
            } else {
                var img = document.createElement("IMG");
                img.src = '../../images/ProfilnoProfilPicture.jpg';
                img.height = 205;
                img.width = 160;
                var oldImg = document.getElementById('streetViewImage');
                document.getElementById('streetViewContainerShow').replaceChild(img, streetViewImage);
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多