0

我正在使用谷歌街景中的自定义全景图构建一个虚拟旅游应用程序。链接行为在两个方面很奇怪:

  1. 通过 localhost 访问和刷新会导致启动全景图上不显示任何链接。更改对 IP 地址的 Web 访问可解决此问题
  2. 当通过 IP 地址访问时,第一个链接事件执行,我移动到第二个全景图。即使links全景对象内的数组显示了预期的数据,第二个全景图中也不会加载任何链接。

谷歌在他们的网站上有一些例子,我一直以此为起点。

一个问题是,我遇到的每个示例都需要手动写出每个全景图的所有值。由于这次旅行将有大约 100 个站点,因此这种方法是不可用的。所以我调整了示例getCustomPanoramacreateCustomLinks函数来处理数组。

我没有依赖 Google 示例中的 switch 方法,而是将数据库返回作为 JSON 对象并对其进行迭代以获取所需的值。

function getCustomPanorama(pano, zoom, tileX, tileY){
  var obj;
  for (var i=0; i<tourData.length; i++){
    if (tourData[i].name == pano){      
      obj = {
        location: { //create StreetViewLocation object
          pano: tourData[i].name,
          description: tourData[i].name,
          latLng: google.maps.LatLng(tourData[i].lat, tourData[i].lon)
        },
         links: [], //create StreetViewLink object 
        tiles: { //create a StreetViewTileData object with properties
          tileSize: new google.maps.Size(tourData[i].width, tourData[i].height),
          worldSize: new google.maps.Size(tourData[i].width, tourData[i].height),
          centerHeading: tourData[i].heading,
          zoom: -1,
          getTileUrl: getCustomPanoramaTileUrl
        }
      } //end object creation

      break;
    }
  }
  return obj;
}

与创建自定义链接相同。

function createCustomLinks(){
  var panoLinks = panotour.getLinks();
  var panoID = panotour.getPano();

  var links = $.ajax({
    type: "GET",
    url: "includes/phpscripts.php?action=getLinks&name="+panoID,
    dataType: "json",
    success: function(data){
      if (data){
        console.log("Links grabbed: "+data.length);

        //loop over response, add link to array
        for(var i=0; i<data.length; i++){
          panoLinks.push({'heading': data[i].heading, 'description': data[i].description, 'pano': data[i].description});
        }

        console.log("Panorama Lins: "+panoLinks)

      } else {
        console.log("Can't get link info");
      }
    }   
  });
}

解决这些问题的任何帮助表示赞赏。

4

1 回答 1

1

在调试任何东西之前,您可能应该切换到 Chrome(如果您还没有使用它)。我正在查看Google 示例,它在那里运行良好,但在 Firefox 13 中,当我重新加载页面时,有时会丢失“Google Sydney”链接。如果有人试图弄清楚为什么链接没有出现,那就不太可靠了。

至于您的问题:我要尝试的第一件事(由于上述不确定性行为)是通过设置使.ajax()内部调用createCustomLinks同步,async: false并查看这是否会改变任何内容。您可能会在评估链接以显示在地图上之后填充链接。

我想您需要提供一个可行的示例才能获得更多帮助。

于 2012-07-05T22:11:50.573 回答