我正在使用Google街景视图中的自定义全景图构建虚拟游览应用程序。链接行为在两个方面是奇怪的:
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");
}
}
});
}
对于解决这些问题的任何帮助表示赞赏。
答案 0 :(得分:1)
在调试任何内容之前,你可能应该切换到Chrome(如果你还没有使用它)。我正在查看Google example并且它在那里工作得很好,但在Firefox 13中,#Google; Google悉尼&#34;重新加载页面时,链接有时会丢失。如果试图找出链接没有出现的原因,那就不太可靠了。
至于你的问题:
我要尝试的第一件事(由于上面描述的非确定性行为)是通过设置.ajax()
同步createCustomLinks
async: false
内的{{1}}调用,看看这是否有所改变。在评估它们在地图上显示后,您可能会填充链接。
我想你需要提出一个有效的例子来获得更多帮助。