Я знаю, что есть много, много ответов на этот вопрос о SO, но я не смог найти тот, который применим в этом случае.Я делаю асинхронный вызов в службу Google и должен вернуть результат:
function getCustomPanorama(pano,zoom,tileX,tileY) {
client.getPanoramaById(pano, function(result, status) {
return {
location: result.location,
links: result.links,
copyright: result.copyright+' BUT GREY',
tiles: {
tileSize: result.tiles.tileSize,
worldSize: result.tiles.worldSize,
centerHeading: result.tiles.centerHeading,
getTileUrl: getCustomPanoramaTileUrl
}
};
});
}
Я понимаю, что вышеупомянутое неверно и не вернется, и думаю, что мне нужно использовать обратные вызовы, но я нене понимаю где.Обратите внимание, что я не могу изменить то, что передается getCustomPanorama.Вся помощь с благодарностью получена.
ОБНОВЛЕНИЕ: Полный код:
var panorama;
var client;
$(document).ready(function() {
var panoramaOptions = {
position: new google.maps.LatLng(51.52241608253253, -0.10488510131835938),
panoProvider: getCustomPanorama
};
client = new google.maps.StreetViewService();
panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions);
});
function getCustomPanorama(pano,zoom,tileX,tileY) {
client.getPanoramaById(pano, function(result, status) {
return {
location: result.location,
links: result.links,
copyright: result.copyright+' BUT GREY',
tiles: {
tileSize: result.tiles.tileSize,
worldSize: result.tiles.worldSize,
centerHeading: result.tiles.centerHeading,
getTileUrl: getCustomPanoramaTileUrl
}
};
});
}
ОБНОВЛЕНИЕ 2:
Предположительно, я пытаюсь сделать что-то невозможное, поэтому пытаюсь сделать другоеподход, предусматривающий предварительное кэширование ответов getPanoramaByID ().