google-maps - 使用半径大于 50 米的 getPanoramaByLocation 获取最近街景的最佳方法

标签 google-maps google-maps-api-3 google-street-view

我知道半径小于 50 米的 getPanoramaByLocation 将返回最近的街景全景。然而,对于某些地点,并不总是有街景。所以我正在做的是这样的:

function insider_function(locations) { 
    var place = new google.maps.LatLng(locations[local_idx].lat,locations[local_idx].lng);
    sv.getPanoramaByLocation(place, 50, function(data, status) { 
    if (status == google.maps.StreetViewStatus.OK) { 
         insider_function_2(locations[local_idx], data); 
    } else { 
        sv.getPanoramaByLocation(place, 100, function(data, status) { 
        if (status == google.maps.StreetViewStatus.OK) { 
            insider_function_2(locations[local_idx], data); 
        } else { 
            alert('Internal error: ' + status + locations[local_idx]); 
        } 
    }
} 

如果半径 50 没有返回任何结果,我会调用半径 100。但我仍然收到某些地址的 ZERO_RESULT 警报。如果我传递一个非常大的数字,例如 9999,我可能会在大多数其他具有封闭街景的位置获得非常远的街景。

那么获得半径大于 50 的最近街景全景的最佳方法是什么。

我不确定谷歌地图是如何做到这一点的。
例如,如果我使用“2300 Geng Rd, Palo Alto, CA”,则坐标为 37.4513333,-122.1214268。半径为 100 的 getPanoramaByLocation 将返回零结果,但有街景: https://www.google.com/maps/place/2300+Geng+Rd,+Palo+Alto,+CA+94303/@37.4513333,-122.1214268

最佳答案

一位 Google 工程师 thread解释了这个问题。以下是从该线程中获得的两个选项。

  1. 使用半径 1000 (1K),这在“大多数”时间都可以获取最接近的全景。 (我发现这确实工作得相当好。)

  2. 运行两个或多个搜索。从大半径开始搜索,然后逐步向下,而不是从小半径开始向上进行搜索。当找到半径较大的全景位置时,请使用搜索点与找到的结果全景之间的距离作为下一次搜索的半径值。根据工程师的评论,您“可能”只需要运行两个搜索请求。

关于google-maps - 使用半径大于 50 米的 getPanoramaByLocation 获取最近街景的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337359/

相关文章:

javascript - 如何单独存储和更改坐标 - Google Maps API

javascript - Google map (V3) InfoWindow 无法正确调整大小

javascript - 单击 InfoWindow Typescript Angular2

javascript - scaleControl 在.net 中无法正确显示

javascript - 为什么使用 Google Places JavaScript 客户端库会返回 "NaN",而在 API URL 中进行硬编码会返回准确的结果?

javascript - 如何更改谷歌地图点以在悬停时弹出?

javascript - Google map 街景 View 信息 wIndows 在 map 上打开

javascript - 如何将地点列表与 Google map 点连接

google-maps - 街景占位符在这里,但街景小人不见了

javascript - 将自定义标记添加到谷歌街景