我正在使用谷歌街景中的自定义全景图构建一个虚拟旅游应用程序。链接行为在两个方面很奇怪:
- 通过 localhost 访问和刷新会导致启动全景图上不显示任何链接。更改对 IP 地址的 Web 访问可解决此问题
- 当通过 IP 地址访问时,第一个链接事件执行,我移动到第二个全景图。即使
links
全景对象内的数组显示了预期的数据,第二个全景图中也不会加载任何链接。
谷歌在他们的网站上有一些例子,我一直以此为起点。
一个问题是,我遇到的每个示例都需要手动写出每个全景图的所有值。由于这次旅行将有大约 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");
}
}
});
}
解决这些问题的任何帮助表示赞赏。