Panoramio es un popular servicio de Google, como probablemente sabremos, que permite subir imágenes localizadas geográficamente en los mapas de Google. Panoramio dispone de un API para la integración de las fotografías de su base de datos en otras aplicaciones web, de manera que cualquier persona puede presentar fotos de lugares del mundo subidas por los usuarios de Panoramio, en su propio sitio web.
El API de Panoramio utiliza JSON como formato de intercambio de la información de las fotos. Por medio de este API podemos construir URL, que solicitadas al sitio de Panoramio, nos devuelven un JSON con los datos de las fotografías, es decir, su título, autor, URL del archivo gráfico, etc. Gracias a la integración de JSON en la mayoría de los lenguajes de programación de aplicaciones web, desde casi todas las plataformas de programación para el desarrollo, se pueden obtener fácilmente las fotos y presentarlas en un sitio web.
Como venimos explicando en el Manual de Trabajo con JSON en PHP, este lenguaje de programación dispone de varias funciones que sirven para consumir archivos JSON y convertirlos en objetos PHP con los que podemos trabajar. Podemos ver como es de práctico el JSON al utilizar el API de Panoramio y cómo en pocas líneas de código podemos acceder a Panoramio y consultar su base de datos de fotografías y mostrarlas en nuestra página web.
Todos estos pasos son sencillos, pero necesitaremos alguna idea sobre distintas partes de PHP, pero afortunadamente en Desarrollo web .com tenemos artículos para obtener la base de conocimientos necesaria para realizar cualquiera de estos pasos.
Primero tenemos que crear una URL para la consulta en el API de Panoramio, que tendrá una forma como esta:
http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=full&from=0&to=5&minx=-0.35&miny=39.44&maxx=-0.34&maxy=39.46&size=medium
Esto nos devolvería fotos:
Las fotos están indicadas, como se decía, en texto con código Javascript en formato JSON. Así pues, si accedemos a esa URL obtendremos el JSON de respuesta.
Para obtener el texto que devuelve Panoramio al acceder a esa URL tenemos que leerlo con las funciones de archivos. Utilizaremos una función ya explicada en el artículo Leer ficheros con PHP
function leer_contenido_completo($url){
$fichero_url = fopen ($url, "r");
$texto = "";
while ($trozo = fgets($fichero_url, 1024)){
$texto .= $trozo;
}
return $texto;
}
Así pues, con una llamada a esta función, enviando la URL que deseamos consultar, podríamos obtener el JSON con las fotos.
$URL_API_PANORAMIO = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=full&from=0&to=5&minx=-0.35&miny=39.44&maxx=-0.34&maxy=39.46&size=medium";
$contenido_url = leer_contenido_completo($URL_API_PANORAMIO);
$JSON_PANORAMIO_PHP = json_decode($contenido_url);
En la variable $JSON_PANORAMIO_PHP tendremos el objeto PHP resultante de la decodificación del JSON recibido en el contenido de la URL.
for ($i=0; $i<count($JSON_PANORAMIO_PHP->photos); $i++){
$foto_actual = $JSON_PANORAMIO_PHP->photos[$i];
echo "<p>";
echo "<img src='" . $foto_actual->photo_file_url . "' width='" . $foto_actual->width . "' height='" . $foto_actual->height . "'>";
echo "<br>";
echo "<small>" . $foto_actual->photo_title . ", por " . $foto_actual->owner_name . "</small>";
echo "</p>";
}
Este recorrido se podría haber hecho de otra forma, pero nos sirve perfectamente un bucle for. Además, quizás vosotros colocaríais las fotos con otro estilo, para adaptarlas al diseño de vuestra página.
Si se desea, podemos ver las fotos de Panoramio que hay en esa localización, que corresponde con la Ciudad de las Ciencias y las Artes de Valencia.
<html>
<head>
<title>Consumir JSON del API de Panoramio desde PHP</title>
</head>
<body>
<?
function leer_contenido_completo($url){
$fichero_url = fopen ($url, "r");
$texto = "";
while ($trozo = fgets($fichero_url, 1024)){
$texto .= $trozo;
}
return $texto;
}
$URL_API_PANORAMIO = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=full&from=0&to=5&minx=-0.35&miny=39.44&maxx=-0.34&maxy=39.46&size=medium";
$contenido_url = leer_contenido_completo($URL_API_PANORAMIO);
echo $contenido_url;
$JSON_PANORAMIO_PHP = json_decode($contenido_url);
echo "<hr>";
//echo $JSON_PANORAMIO_PHP->count; //esto muestra el número de fotos totales que existen en Panoramio en esa localización
for ($i=0; $i<count($JSON_PANORAMIO_PHP->photos); $i++){
$foto_actual = $JSON_PANORAMIO_PHP->photos[$i];
echo "<p>";
echo "<img src='" . $foto_actual->photo_file_url . "' width='" . $foto_actual->width . "' height='" . $foto_actual->height . "'>";
echo "<br>";
echo "<small>" . $foto_actual->photo_title . ", por " . $foto_actual->owner_name . "</small>";
echo "</p>";
}
?>
</body>
</html>
| Como hacerlo si lo proceso con Java Por: Cristina | 30/3/2010
|
| Como es el script para que no salga el texto Por: martin | 24/5/2010
|
![]() vito_gu... | Calculo minx, miny y maxx, maxy | 08/9/2010 |