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

wle*_*ich 5 google-maps-api-3

我有一个使用Google Maps JavaScript API V3的webapp并排显示常规googlemap和StreetView.当地图改变位置时,它会告诉街景使用StreetViewPanorama.setPosition()跟随它.

但是,当我将地图滚动到没有StreetView的地方时,街景图像会停留在最后一个位置.它的getPosition()方法返回与主映射相同的LatLng.

如何判断我是否搬到了街景无法使用的地方?

wle*_*ich 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);
};
Run Code Online (Sandbox Code Playgroud)