【问题标题】:Links not showing up in StreetView街景中未显示链接
【发布时间】:2012-06-26 19:46:45
【问题描述】:

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

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

Google has 他们网站上的一些示例,我一直以此为起点。

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

我没有依赖 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");
      }
    }   
  });
}

对解决这些问题的任何帮助表示感谢。

【问题讨论】:

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


    【解决方案1】:

    在调试任何内容之前,您可能应该切换到 Chrome(如果您还没有使用它)。我正在查看Google example,它在那里运行良好,但在 Firefox 13 中,当我重新加载页面时,有时会丢失“Google Sydney”链接。如果试图找出链接不出现的原因,则不太可靠。

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

    我想您需要提供一个工作示例以获得更多帮助。

    【讨论】:

    • 我过了一段时间才能够测试您的解决方案,但 async:false 设置成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多