0
       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。我知道,如果不使用这些参数,该函数将返回图像的 url。

我的问题是:1/这些参数用于什么以及如何使用它?2/什么是全景ID(我一直在寻找它但仍然无法理解)

4

1 回答 1

1

你在说什么?

您可能会想,“为什么我的问题被否决了?” (PS:我没有这样做!)。当问一个问题时,在没有任何上下文的情况下打随机代码会让任何试图帮助你的人和你一样迷失方向。

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

  • 您正在使用哪些技术?有任何 API 吗?
  • 你试过什么?
  • 那个代码来自哪里?
  • 任何文档的链接?上下文是什么?

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

你的代码,它来自哪里?

在进行了一些挖掘和研究后,我发现您的代码实际上是来自 Google 文档Custom Street View 全景图的一段代码。

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

我阅读了文档,但我仍然不明白!

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

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

pano, zoom, tileX, tileY用来做什么的?

在您提供的代码示例中,它们用于......什么都没有。你可以从字面上删除它们,getCustomPanoramaTileUrl代码仍然可以工作。

那么,它们是用来做什么的呢?好吧,根据StreetView 的参考文档,这些参数具有以下目标:

获取指定磁贴的磁贴图像 URL。pano是街景图块的全景图 ID。tileZoom是磁贴的缩放级别。 tileX是图块的 x 坐标。tileY是图块的 y 坐标。返回平铺图像的 URL。

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

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

全景图片

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

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


希望能帮助到你!

于 2016-09-09T08:40:12.900 回答