Google のストリート ビュー内でカスタム パノラマを使用して、バーチャル ツアー アプリケーションを構築しています。リンクの動作は、次の 2 つの点で奇妙です。
- localhost 経由でアクセスして更新すると、開始パノラマにリンクが表示されません。Web アクセスを IP アドレスに変更すると、この問題が解決します
- IP アドレス経由でアクセスすると、最初のリンク イベントが実行され、2 番目のパノラマに移動します。
links
パノラマ オブジェクト内の配列に期待されるデータが表示されていても、2 番目のパノラマにはリンクが読み込まれません。
Googleのサイトにはいくつかの例があり、私はそれを出発点として使用しています。
1 つの問題は、私が遭遇した各例では、各パノラマのすべての値を手動で特定の方法で書き出す必要があることです。このツアーには最大 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");
}
}
});
}
これらの問題を解決するための助けをいただければ幸いです。