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

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

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

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

一个问题是,我遇到的每个示例都需要手动写出每个全景图的所有值。由于这次旅行将有大约 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");
      }
    }   
  });
}

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

【问题讨论】:

    标签: 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
    相关资源
    最近更新 更多