【问题标题】:Getting a Direct Image From Address With Google Street View Image API使用 Google Street View Image API 从地址获取直接图像
【发布时间】:2017-11-28 17:01:40
【问题描述】:

我正在使用静态图片 API(您将 URL 传递给 Google 并返回图片)。我的问题是谷歌返回的图像有时不是地址的直接/清晰视图。我希望获得与 Google 地图搜索功能提供的缩略图相同的图像。

我已阅读此 API 的 Google 文档。示例 URL 为:https://maps.googleapis.com/maps/api/streetview?parameters&size=640x640&fov=50&location=4113+Hartford+Dr+Garland+TX

如果我将相同的地址(4113 Hartford Dr, Garland, TX)直接输入 Google 地图,我会得到更清晰的图像。

我已经尝试过更改 FOV 值。我唯一的其他想法是使用标题,但我对此不确定。

最终实现是在 Excel 中使用 VBA。

如果您需要任何其他信息,请告诉我。

【问题讨论】:

  • stackoverflow.com/questions/16111626/… 类似,但在这里没有看到明确的答案。
  • 我尝试添加标题。结果几乎相同,无论如何它都可以工作并且您可以查明标题。 maps.googleapis.com/maps/api/…
  • 你会一直使用 180 吗?这背后有什么逻辑吗?
  • 不,我在谷歌地图上查看了位置,搜索了相机(有利位置)。房子正北。 180纯属偶然

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


【解决方案1】:

您将不得不compute the heading。我没有这方面的原始数学,但如果可以的话,这里有一个使用 JS API 的示例。

  function getStreetView(lat, lng) {
    let panorama = new google.maps.StreetViewPanorama(
      document.getElementById('panorama'), {
      position: {lat: lat, lng: lng}
    })
    let service = new google.maps.StreetViewService
    service.getPanoramaByLocation(panorama.getPosition(), 50, function(panoData) {
      if (panoData) {
        let panoCenter = panoData.location.latLng
        let heading = google.maps.geometry.spherical.computeHeading(panoCenter, {lat: lat, lng: lng})
        let pov = panorama.getPov()
        pov.heading = heading
        panorama.setPov(pov)
      } else {
        alert('no streetview found')
      }
    })
    map.setStreetView(panorama) // set dude on map
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多