StreetViewService getPanorama方法报告LatLng paris

时间:2016-08-19 07:33:04

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

突然间,我似乎从Google Maps Javascript API获取了不准确的状态代码。例如,使用以下代码:

sv.getPanorama({
    location: {lat: 35.685, lng: 139.7514}, 
    radius: 350
  }, function(data, status) {
    console.log("getPano() location = "+data.location.latLng);
    console.log("getPano() panoID = "+data.location.pano);
    console.log("getPano() status = "+status);
});

有了这个,我得到以下输出:

new getPano() location = (35.685175, 139.75279950000004)
getPano() panoID = F:-2eRkGOODHZg/VtKZ7EGeepI/AAAAAAAADLY/Fvhw3HeTfXcAVq0wuHxq22LnoTtpeUx2A
getPano() status = OK

当我尝试根据此数据构建请求URL时,例如:

https://maps.googleapis.com/maps/api/streetview?size=640x540&location=35.685175,139.75279950000004

或使用全景ID:

https://maps.googleapis.com/maps/api/streetview?size=640x540&pano=F:-2eRkGOODHZg/VtKZ7EGeepI/AAAAAAAADLY/Fvhw3HeTfXcAVq0wuHxq22LnoTtpeUx2A

我得到"抱歉,我们这里没有图像。"图片。换句话说,即使状态返回OK,此位置也没有可用的全景。手动访问此Google地图latLng可以解决这个问题。谷歌确实有该位置的卫星图像,但没有街景视图。

这段代码过去常常有用,所以我对发生的事情感到困惑。当panoID和latLng指向无图像时,为什么API会为此位置返回OK全景状态?

更新: 我很感激任何确认,我的发现对其他人来说是相同的(例如,它不是我做错的事情),以及任何解决方法的想法。我的应用程序可以为latLng位置提取静态街景图像,但如果没有可用的街景图像,我会转移到卫星。我使用getPanorama()状态来确定要采取的方向。

3 个答案:

答案 0 :(得分:1)

从几天前开始,google.maps.StreetViewService.getPanorama()确实返回了无法在JavaScript API中显示的panos。

这是API中的一个问题,请在问题跟踪器上启动以获取更新:

Issue 10335: Bug: StreetViewService getPanorama() reporting incorrect status for many latLng pairs

答案 1 :(得分:1)

新的Street View Image Metadata API可让您查询指定位置的街景全景图的可用性,并且只会返回街景图像API中实际可用的全景图。这将使你摆脱Issue 10335

地点可以通过地址或latlng指定。如果找到全景图,则响应将包含要在街景图像API请求中使用的全景ID。这些元数据查询是免费的。

答案 2 :(得分:0)

公共问题跟踪器中有一项单独的功能请求,可以在街景图像API中使用F:-2eRkGOODHZg/VtKZ7EGeepI/AAAAAAAADLY/Fvhw3HeTfXcAVq0wuHxq22LnoTtpeUx2A等全景ID访问全景图:

https://issuetracker.google.com/issues/35829459

如果您对此功能感兴趣,请将功能请求加注星标以添加您的投票。

<强>更新

我之前提到的功能请求现在标记为已修复。

Google通过街景图片API实现了对用户生成内容的访问。但是,在此过程中已更改全景ID格式。

例如,您提到了全景ID F:-2eRkGOODHZg/VtKZ7EGeepI/AAAAAAAADLY/Fvhw3HeTfXcAVq0wuHxq22LnoTtpeUx2A

现在这个全景图的新全景ID是 CAMSRi0yZVJrR09PREhaZy9WdEtaN0VHZWVwSS9BQUFBQUFBQURMWS9Gdmh3M0hlVGZYY0FWcTB3dUh4cTIyTG5vVHRwZVV4MkE.

您可以使用免费的街景图像元数据请求轻松地将之前的全景ID转换为新的ID,并且不会消耗您的配额:

https://maps.googleapis.com/maps/api/streetview/metadata?pano=F%3A-2eRkGOODHZg%2FVtKZ7EGeepI%2FAAAAAAAADLY%2FFvhw3HeTfXcAVq0wuHxq22LnoTtpeUx2A&key=YOUR_API_KEY

{
    "copyright":"© Alberto Saito","date":"2016-02",
    "location":{
        "lat":35.685175,
        "lng":139.7527995
    },"pano_id":"CAMSRi0yZVJrR09PREhaZy9WdEtaN0VHZWVwSS9BQUFBQUFBQURMWS9Gdmh3M0hlVGZYY0FWcTB3dUh4cTIyTG5vVHRwZVV4MkE.",
    "status":"OK"
}

现在应用新的全景ID并享受:

https://maps.googleapis.com/maps/api/streetview?pano=CAMSRi0yZVJrR09PREhaZy9WdEtaN0VHZWVwSS9BQUFBQUFBQURMWS9Gdmh3M0hlVGZYY0FWcTB3dUh4cTIyTG5vVHRwZVV4MkE.&size=600x400&key=YOUR_API_KEY