J'ai une carte OpenLayers assez bien intégrée à laquelle je souhaite ajouter des photos de l'API Panoramio. Malheureusement, il semble que les deux API sont sous documentés sur ce sujet. J'ai trouvé un bon tutoriel ici http://www.gisandchips.org/2010/05/04/openlayers-y-panoramio/ mais comme je suis nouveau à tout cela, pourrait être pourquoi je ne peux pas le faire seul. J'ai l'impression que même en utilisant ce tutoriel j'ai beaucoup d'espaces vides dans mon esprit et pour ne pas mentionner, les photos n'apparaissent pas sur ma carte: -/Ajout de photos panoramiques à une carte OpenLayers
Voici ma partie du code qui démontre mon utilisation de cette tutoriel et ce que j'ai essayé jusqu'à présent:
var url = "http://www.panoramio.com/map/get_panoramas.php";
var parameters = {
order:'popularity',
set:'full',
from:0,
to:20,
minx: 84.05,
miny: 31.36,
maxx: 91.89,
maxy: 32.30,
size:'thumbnail'
}//end parameters
OpenLayers.loadURL(url, parameters, this, displayPhotos);
function displayPhotos(response) {
var json = new OpenLayers.Format.JSON();
var panoramio = json.read(response.responseText);
var features = new Array(panoramio.photos.length);
for (var i = 0; i < panoramio.photos.length; i++)
{
var upload_date = panoramio.photos[i].upload_date;
var owner_name = panoramio.photos[i].owner_name;
var photo_id = panoramio.photos[i].photo_id;
var longitude =panoramio.photos[i].longitude;
var latitude = panoramio.photos[i].latitude;
var pheight = panoramio.photos[i].height;
var pwidth = panoramio.photos[i].width;
var photo_title = panoramio.photos[i].photo_title;
var owner_url = panoramio.photos[i].owner_url;
var owner_id = panoramio.photos[i].owner_id;
var photo_file_url = panoramio.photos[i].photo_file_url;
var photo_url = panoramio.photos[i].photo_url;
var fpoint = new OpenLayers.Geometry.Point(longitude,latitude);
var attributes = {
'upload_date' : upload_date,
'owner_name':owner_name,
'photo_id':photo_id,
'longitude':longitude,
'latitude':latitude,
'pheight':pheight,
'pwidth':pwidth,
'pheight':pheight,
'photo_title':photo_title,
'owner_url':owner_url,
'owner_id':owner_id,
'photo_file_url':photo_file_url,
'photo_url':photo_url
}//end attributes
features[i] = new OpenLayers.Feature.Vector(fpoint,attributes);
}//end for
var panoramio_style2 = new OpenLayers.StyleMap(OpenLayers.Util.applyDefaults({
pointRadius: 7,
fillColor: "red",
fillOpacity: 1,
strokeColor: "black",
externalGraphic: "panoramio-marker.png"
}, OpenLayers.Feature.Vector.style["default"]));
var vectorPano = new OpenLayers.Layer.Vector("Panoramio Photos", {
styleMap: panoramio_style2
});
vectorPano.addFeatures(features);
map.addLayer(vectorPano);
}//end displayPhotos
Dans mon esprit ce code devrait fonctionner parfaitement. En me donnant un résultat de quelques vignettes Panoramio sur ma carte glissante. Malheureusement, il semble que la couche est là, mais vide .. Lorsque je regarde le texte de réponse dans Firebug, je peux voir que le JSON est retourné avec des attributs de photos de Panoramio, à l'endroit que j'ai spécifié (Tibet). J'apprécie votre aide et votre temps pour examiner mes problèmes.
Merci,
elshae
Merci pour votre réponse! J'ai effectivement résolu le problème et j'ai oublié d'afficher la réponse ici! Je crois 'var fpoint = new OpenLayers.Geometry.Point (longitude, latitude); fpoint.transform (new OpenLayers.Projection ("EPSG: 4326"), nouveau OpenLayers.Projection ("EPSG: 900913")); ' a fait l'affaire. Le projet OpenLayers n'est pas sous-documenté dans son ensemble, mais quand il s'agit d'utiliser l'API Panoramio avec OpenLayers, je reste fidèle à ce que j'ai dit. Si j'ai tort, je suis désolé, s'il vous plaît montrez-moi de bonnes ressources si vous les connaissez. Ce lien que j'ai fourni ci-dessus est le seul que j'ai pu trouver pour utiliser les deux. – elshae
Sans compter que je suis conscient qu'il y a une nouvelle API pour Panoramio et ici j'utilise l'ancienne. J'ai cherché partout pour une sorte de guide sur la façon d'utiliser les deux ensemble et n'ont rien trouvé. Pour quelqu'un qui n'a pas l'expérience d'utiliser ces API, il peut être très difficile de tout comprendre. Je ne m'attends pas à ce que toutes les réponses soient écrites de manière flagrante, mais certainement une intro de base serait très bien :). Je vous remercie. – elshae