Google街景API全景参数(Javascript与HTTP)之间的差异

时间:2017-11-07 14:04:01

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

我正在开发一个计算机视觉项目,我做了一个javascript程序(使用JS Google Street View API)来注释Google街景图像中的对象。

我的问题如下:

当我使用Google Street View HTTP API检索我用javascript程序注释的图像时,即使我使用相同的确切参数来获取街景视图,返回的图像也不完全相同。

作为一个例子比长篇解释更好,是否有人知道为什么2个不同的API为相同的参数提供不同的图像?

  

(最近的PanoId = “cBMoF9_AqIlK81fFNelY3g”,
  标题= 258.7435095128366,
  节距= -3.895758339008495,
  size = 600x600例如。)

我得到this image with the HTTP Google Street View API

this other one with the JS Google Street View API

我首先认为这是因为zoom / fov属性的不同,但是this post确认了它, zoom = 3 相当于 fov = 22.5 (参见我的例子)。此外,我使用默认值(zoom = 1 / fov = 90)进行测试,图像不完全相同。

有关详细信息,我在下面的代码段中复制了部分javascript代码,可以与HTTP API链接进行比较。 (别忘了更改 YOUR_API_KEY !!!)

HTTP API:

https://maps.googleapis.com/maps/api/streetview?size=600x600&pano=cBMoF9_AqIlK81fFNelY3g&heading=259.61209261440393&pitch=-2.9417641281063715&fov=22.5

Javacript API:

function initialize() {

  // Set up the map.
  map = new google.maps.Map(document.getElementById('map'), {
    center: {"lat": 48.84981719, "lng": 2.29300828},
    zoom: 16
  });

  var marker = new google.maps.Marker({
    position: {"lat": 48.84981719, "lng": 2.29300828},
    map: map,
    title: "test",
    draggable: true
  });

  var panorama = new google.maps.StreetViewPanorama(
    document.getElementById('pano'), {
      // position: params.center,
      pano: "cBMoF9_AqIlK81fFNelY3g",
      pov: {
        heading: 258.7435095128366,
        pitch: -3.895758339008495
      },
      zoom: 3,
      mode: "html5"
    });
  map.setStreetView(panorama);

}
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#map, #pano {
  float: left;
  height: 600px;
  width: 600px;
  position: relative;
  z-index: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="map"></div>
<div id="pano"></div>
<script async defer type="text/javascript">
  var apiKey = "YOUR_API_KEY";
  var googleURL = 'https://maps.googleapis.com/maps/api/js?key=' + apiKey + "&callback=initialize";
  $.getScript(googleURL)
</script>

1 个答案:

答案 0 :(得分:0)

我遇到了相关的问题,我得出的结论是街景元数据API提供的坐标不正确(随机扰动?)。

例如,有一对相邻的全景图如下。

Metadata API将坐标[lat,lon]给出为:[14.43644554,99.87141436],[14.4365385,99.8714599]。计算排水量:东面4.904米,北面10.337米。计算间隔:11.441米。 Caclulated航向25.38度。

在浏览器(HTTP API)中,它们显示为:[14.4364125,99.8713909],[14.4364907,99.8714431]。计算排水量:东面5.621米,北面8.695米。计算间隔:10.354米。标题为32.88度。

真的很大差异!

(在此示例中,如果将元数据API中的坐标提供给HTTP API,则HTTP API呈现与Python图像API相同的全景图,但我也看到了类似于OP给出的示例,其中有不同的示例返回全景。)

我真的很想听到任何能够更多地了解这一点的人。