使用Google Maps JavaScript API V3检查StreetView可用性

5
我有一个Web应用程序,使用Google Maps JavaScript API V3来同时显示常规的谷歌地图和街景。当地图改变位置时,它会使用StreetViewPanorama.setPosition()命令街景跟随它。
然而,当我将地图滚动到街景不可用的地方时,街景图像仍然停留在最后一个位置。它的getPosition()方法返回与主地图相同的LatLng。
如何确定我是否移动到了街景不可用的地方?
1个回答

2

好的,我找到了一个答案,虽然不是最终答案。

每次移动后,使用StreetViewService.getPanoramaByLocation()来获取N米范围内最近的全景图。基于此,您可以保持原地、移动或setVisible(false)。

我使用了一个标志和一个setTimer来防止大量不必要的getPanoramaByLocation调用,就像这样:

var check_availability_lock = false;
var check_availability = function() {
    if (check_availability_lock) {
        return;
    }
    check_availability_lock = true;
    var availability_cb = function(data, status) {
        check_availability_lock = false;
        // console.log("status = ", status);
        if (status !== 'OK') {
            map.setVisible(false);
        }
        else {
            map.setVisible(true);
        }
    }
    setTimeout(function(){
        var latlng = map.getPosition();
        svc.getPanoramaByLocation(latlng, 50, availability_cb);
    }, 2000);
};

http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService - Josh Johnson
这种方法的问题在于每次调用getPanoramaByLocation都会返回约2Mb的数据,而这些数据永远不会被处理,因此您的网页很快就会变得不稳定并崩溃。强烈建议限制对getPanoramaByLocation的调用次数。然而,目前没有其他确定全景图可用性的替代方法。 - user1813319

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接