链接未显示在StreetView中

时间:2012-06-26 19:46:46

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

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

  1. 通过localhost访问和刷新会导致开始全景图上没有显示链接。更改Web访问IP地址可以解决此问题
  2. 当通过IP地址访问时,第一个链接事件执行,我移动到第二个全景图。即使全景对象内的links数组显示预期数据,也不会在第二个全景图中加载链接。
  3. 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");
          }
        }   
      });
    }
    

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

1 个答案:

答案 0 :(得分:1)

在调试任何内容之前,你可能应该切换到Chrome(如果你还没有使用它)。我正在查看Google example并且它在那里工作得很好,但在Firefox 13中,#Google; Google悉尼&#34;重新加载页面时,链接有时会丢失。如果试图找出链接没有出现的原因,那就不太可靠了。

至于你的问题: 我要尝试的第一件事(由于上面描述的非确定性行为)是通过设置.ajax()同步createCustomLinks async: false内的{{1}}调用,看看这是否有所改变。在评估它们在地图上显示后,您可能会填充链接。

我想你需要提出一个有效的例子来获得更多帮助。