在 google 地图上查看全景图像

view panoramic image on google map

       function initPano() {
        // Set up Street View and initially set it visible. Register the
        // custom panorama provider function. Set the StreetView to display
        // the custom panorama 'reception' which we check for below.
        var panorama = new google.maps.StreetViewPanorama(
          document.getElementById('map'), {
            pano: 'reception',
            visible: true,
            panoProvider: getCustomPanorama
        });
      }

      // Return a pano image given the panoID.
      function getCustomPanoramaTileUrl(pano, zoom, tileX, tileY) {
        // Note: robust custom panorama methods would require tiled pano data.
        // Here we're just using a single tile, set to the tile size and equal
        // to the pano "world" size.
        return 'http://bestofdiscus.gr/portals/0/Discus-Header-WR.jpg';
      }






  function getCustomPanorama(pano, zoom, tileX, tileY) {
        if (pano === 'reception') {
          return {
            location: {
              pano: 'reception',
              description: 'Google Sydney - Reception'
            },
            links: [],
            // The text for the copyright control.
            copyright: 'Imagery (c) 2010 Google',
            // The definition of the tiles for this panorama.
            tiles: {
              tileSize: new google.maps.Size(1024, 512),
              worldSize: new google.maps.Size(1024, 512),
              centerHeading: 105,
              getTileUrl: getCustomPanoramaTileUrl
            }
          };
        }
      }

在这段代码中,我不理解函数getCustomPanoramaTileUrl中的参数:pano、zoom、tileX、tileY。我知道,如果不使用这些参数,该函数将 return 图像的 url。

我的问题是: 1/这些参数有什么用以及如何使用? 2/什么是pano ID(找了好久还是不懂)

你在说什么?

您可能在想,"why is my question downvoted?"(PS:我没有这样做!)。在提出问题时,在没有任何上下文的情况下敲打随机代码会让任何试图帮助你的人都像你一样迷失方向。

虽然代码很有用,但您的问题缺少重要信息:

  • 您使用的是什么技术?有 API 吗?
  • 你试过什么?
  • 代码来自哪里?
  • 是否有指向任何文档的链接?上下文是什么?

在提问之前,请务必阅读以下页面https://whosebug.com/help/how-to-ask

你的代码,从哪里来的?

经过一些挖掘和研究后,我发现您的代码实际上是 Google 文档中的一段代码,Custom Street View panoramas

考虑到这一点,Google 提供了一些有关此问题的文档,可帮助您了解代码的运行情况:

我看了文档,还是没看懂!

虽然 Google 讨论了具有多个视图的自定义全景图,但提供的示例过于简单,无法说明 Google 为您提供的资源的全部潜力。

现在,关于您的具体问题...

pano, zoom, tileX, tileY有什么用?

在您提供的代码示例中,它们用于...没有任何作用。您可以从字面上将它们从 getCustomPanoramaTileUrl 中删除,代码仍然有效。

那么,它们有什么用呢?那么,根据References Documentation for StreetView,这些参数有如下objective:

Gets the tile image URL for the specified tile. pano is the panorama ID of the Street View tile. tileZoom is the zoom level of the tile. tileX is the x-coordinate of the tile. tileY is the y-coordinate of the tile. Returns the URL for the tile image.

现在,如果这仍然令人困惑,我将尝试解释一下。

自定义全景图是一组图像,放在一起,如下图所示:

当使用真实的全景视图时,你想传递一组图像,而 StreetView 对象需要知道你指的是哪一组图像 (panoId)、在哪个缩放级别 (zoom) 以及在设置您当前看到的图像的 X 和 Y 位置(tileX 和 tileY)。

在您提供的示例中,由于它非常简单,因此使用了 none 因为无论如何您总是 return 相同的图像。但在使用一组图像的更复杂的示例中,此信息对于让 StreetView 知道您正在查看的位置以便显示正确的图像至关重要。


希望对您有所帮助!