Archivos en la categoría Tecnología Infocampus

Utilizar el widget de las universidades en tu blog o web

El viernes anunciamos el lanzamiento del widget UWA de Infocampus, que nos permite tener en nuestro blog o página web las últimas novedades de Infocampus: anuncios clasificados, ofertas de empleo, noticias… Hoy le toca el turno al widget de las universidades de Infocampus.

Con este widget podrás incluir en cualquier página web o blog, información completa de una determinada universidad: mapa de localización, datos de contacto, fotografías y un buscador interno. Puedes ver a continuación el widget de la Universidad Complutense de Madrid:

El procedimiento para incluirlo es muy sencillo: en la página resumen de las universidades (a la que se accede desde la página principal, en el scroll inferior) se puede encontrar el código del widget de la universidad que estamos consultando (pinchando en widget Infocampus). Este código habrá que pegarlo en el lugar de la web donde se quiere insertar.

  1. <script src=”http://www.infocampus.es/include/lib/widget/generateWidget.php?universidad=universidad-complutense-de-madrid&width=270&map=true&address=true&photos=true&search=true”></script>

Además, permite de una manera muy sencilla configurar algunos aspectos del widget, cambiando los valores de los parámetros que se pasan al widget:

  • universidad: cambia de universidad. Lo más sencillo para saber el permalink de una universidad es ir a su página resumen y obtener el código directamente (p.ej. universidad-complutense-de-madrid o universidad-de-alicante).
  • width: ancho del widget en pixels.
  • map: si es false no se mostrará el mapa de situación de la universidad.
  • address: si es false no se mostrará la dirección de la universidad.
  • photos: si es false no se mostrarán fotos de la universidad.
  • search: si es false no se mostrará el buscador de la universidad.

Utilizar el widget UWA de Infocampus en tu blog o web

UWA

UWA

Infocampus acaba de lanzar el widget UWA (Universal Widget API), para que se puedan incluir los últimos anuncios, ofertas de empleo y noticias de una determinada universidad en cualquier blog o página web.

El procedimiento para incluirlo es muy sencillo: en la página resumen de las universidades (a la que se accede desde la página principal, en el scroll inferior) se puede encontrar la URL del widget UWA de la universidad que estamos consultando. Esa URL se utilizará posteriormente para insertar el widget.

Para insertar el widget se debe utilizar el siguiente código, y pegarlo en la parte de la página web o blog donde queramos que aparezca. En negrita están los parámetros que pueden ser cambiados:

  1. <script src=”http://www.netvibes.com/js/UWA/load.js.php?env=BlogWidget” type=”text/javascript”></script>
  2. <div id=”UWA_widget”>Cargando el widget de Infocampus</div>
  3. <script type=”text/javascript”>
  4. var BW = new UWA.BlogWidget({container: document.getElementById(’UWA_widget’), moduleUrl: ‘http://www.infocampus.es/universidad/universidad-de-alicante/widget/’});
  5. BW.setConfiguration({’title’:'Universidad de Alicante’, ‘height’:'300′, ‘borderWidth’:'1′, ‘color’:'#ffffff’, ‘displayTitle’:true, ‘displayFooter’:false});
  6. BW.setPreferencesValues({’url’:”, ‘limit’:'10′});
  7. </script>

Los parámetros básicos que se deben cambiar son:

  • Línea 4: moduleUrl: debe tener la URL del widget (se consigue desde la página resumen de la universidad)
  • Línea 5: title: se puede poner cualquier título, el resto de parámetros sirven para cambiar el aspecto del widget.

Se puede ver un ejemplo del funcionamiento del widget aquí.

Widget de información sobre las universidades, aquí.

Más información sobre los widgets UWA: http://dev.netvibes.com/

Visitas virtuales en Infocampus con StreetView. Datos técnicos

Si ayer os informábamos de la nueva opción incluida en el portal de anuncios de Infocampus para poder realizar visitas virtuales, hoy vamos a contaros cómo se puede conseguir integrar el sitema de Google Street View en una página web, solventando el problema de determinar si una coordenada pertenece a una ciudad disponible en Street View.

Primeros pasos

En nuestro ejemplo, vamos a tener dos capas: una para el mapa y otra para el Street View, de manera que cuando se pinche en un punto del mapa, mostremos ese punto en la capa de Street View:

  1. <div id=”mapa” style=”width:400px; height:150px;”></div>
  2. <div id=”pano” style=”width:400px; height:150px;”></div>

En javascript, cuando detectamos si el navegador es compatible con Google Maps, le decimos a la API que la capa con id pano va a ser una vista Street View. Además, mostramos un mensaje de error en caso de que el navegador del usuario no tuviera Flash (requerido para Street View). Por último, añadimos el listener para cuando se pinche en un punto del mapa, se muestre la calle en Street View.

  1. // función que se ejecutará en caso de error
  2. function handleNoFlash(errorCode) {
  3. if (errorCode == FLASH_UNAVAILABLE) {
  4. alert(”Error: Flash no encontrado”);
  5. return;
  6. }
  7. }
  8. if (GBrowserIsCompatible()) {
  9. var myPano = new GStreetviewPanorama(document.getElementById(”pano”));
  10. GEvent.addListener(myPano, “error”, handleNoFlash);
  11. … (crear el mapa con new GMap2, añadir controles, centrarlo…)
  12. // al hacer click en un punto del mapa muestra la vista Street View
  13. GEvent.addListener(map,”click”, function(overlay,latlng) {
  14. myPano.setLocationAndPOV(latlng);
  15. });
  16. }

Y ya está! Solamente con este código tendríais un mapa en el que al pinchar en un punto, se mostraría la calle. El problema: Street View solamente está disponible en cuatro ciudades españolas: Madrid, Barcelona, Sevilla y Valencia.

Detectar si una coordenada está disponible en Street View

Lamentablemente, Google todavía no tiene nada que te indique si una coordenada está disponible en Street View, por lo que debemos construirnos un sistema que lo detecte.

Utilizando las llamadas HTTP a Google, y con la nueva opción de geocodificación inversa (obtener una dirección a partir de un par latitud/longitud) podemos conocer el país, provincia, localidad e incluso dirección de un punto, por lo tanto consultando estos valores podemos saber si un punto está disponible para Street View.

Si realizamos una llamada a http://www.google.es/maps/geo?output=xml&oe=utf8&ll=41.442041,2.18749 obtendremos un XML, que nos indicará que se corresponde con la dirección: Plaça de Mossèn Clapés, 08030, Barcelona, España.

Ya sabemos como tener la información, ahora hay que usarla, nosotros lo haremos en PHP con ayuda de SimpleXML:

  1. define(’MAPS_HOST’,'www.google.es’);
  2. define(’GOOGLE_MAPS_KEY’,'vuestra_clave’);
  3. $delay=0;
  4. $base_url = “http://” . MAPS_HOST . “/maps/geo?output=xml&oe=utf8″ . “&key=” .GOOGLE_MAPS_KEY;
  5. $geocode_pending = true;
  6. $coordenadas=’41.442041,2.18749′;
  7. while ($geocode_pending) {
  8. $request_url = $base_url . “&ll=” . $anuncio_coordinadas;
  9. $xml = simplexml_load_file($request_url) or die(”url not loading”);
  10. $status = $xml->Response->Status->code;
  11. if (strcmp($status, “200″) == 0) {
  12. // geocodificación inversa resuelta
  13. $geocode_pending = false;
  14. $pais = $xml->Response->Placemark->AddressDetails->Country->CountryNameCode;
  15. $provincia = $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->SubAdministrativeAreaName;
  16. $localidad = $xml->Response->Placemark->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName;
  17. if ($pais_mapa==’ES’ && (
  18. ($provincia_mapa==’Madrid’ && $localidad_mapa==’Madrid’) || ($provincia_mapa==’Barcelona’ && $localidad_mapa==’Barcelona’) ||
    ($provincia_mapa==’Valencia’ && $localidad_mapa==’Valencia’) ||
    ($provincia_mapa==’Sevilla’ && $localidad_mapa==’Sevilla’)
    )) {
  19. // tiene streetview disponible!!
  20. $streetview=1;
  21. }
  22. } else if (strcmp($status, “620″) == 0) {
  23. // se reduce la velocidad de peticiones
  24. $delay += 100000;
  25. } else {
  26. // fallo al realizar la geocodificación inversa
  27. $geocode_pending = false;
  28. }
  29. usleep($delay);
  30. }
  31. }

Nos quedaría en la variable $streetview un 1 si está disponible en ese punto, o un 0 si no lo está. Si tenemos varios mapas es recomendable guardar esta información, para evitar tener que estar resolviendo siempre si el mapa va a tener Street View disponible.

Esta solución es obviamente mejorable en dos sentidos: Google proporcionará una manera de conocer si un punto está disponible en Street View, lo que nos facilitará mucho la tarea, y por otra parte, mientras no añada esta opción, y se vayan añadiendo ciudades, este código puede volverse muy engorroso.

Recordad que podeis ver el ejemplo funcionando en alguno de los anuncios de Infocampus: por ejemplo, http://anuncios.infocampus.es/anuncio/2008-11-04-30-alquilo-piso-en-el-barrio-de-sant-andreubarcelona

Visitas virtuales en Infocampus con StreetView

Ejemplo de anuncio con mapa y StreetView

¿Qué vistas tiene el tercer piso que estoy a punto de alquilar?, ¿hay algún supermercado cerca?, ¿cómo es el portal? Hasta ahora, no había manera de conseguir esta información sin visitar la vivienda, pero las cosas han cambiado en Infocampus…

Os presentamos la última novedad introducida en el portal de anuncios de Infocampus: visitas virtuales por las calles de las principales ciudades españolas.

Gracias a la tecnología Google Street View, esta opción estará disponible en todos los anuncios de Infocampus que tengan un mapa asociado y que estén en Madrid, Barcelona, Valencia o Sevilla.

A medida que Google vaya actualizando las ciudades disponibles, las iremos incorporando a Infocampus.

Esperamos que sea de vuestra utilidad ;)

Infocampus en el Google Developer Day 2008

Entrada al Google Developer Day

Entrada al Google Developer Day

Parte del equipo de Infocampus se desplazó el pasado jueves 25 de septiembre al Google Developer Day 2008 celebrado en Madrid, donde pudimos conocer de primera mano las últimas novedades de las APIs y los productos de Google para programadores.

Las conferencias se centraron este año en las APIs de Google Maps, YouTube y OpenSocial, el protocolo GData, la tecnología AppEngine y sobre el nuevo navegador de Google: Chrome.

Tuvimos la suerte de poder hablar con Javier Arias, ingeniero de ventas de Google en Madrid y responsable de las conferencias sobre Google Maps, y comentarle las experiencias y dudas sobre esta tecnología. Desde aquí le mandamos un saludo.

La experiencia fué inolvidable, y esperamos poder asistir el próximo año.

Introducción de direcciones en mapas de Google Maps

A través de esta serie de posts os iremos contando algunas de las tecnologías que hemos utilizado para crear Infocampus, la red social universitaria de ocio, cultura y tecnología, esperando que sea de utilidad para mucha más gente.

En este primer post vamos a hablar de Google Maps, y cómo hemos utilizado su API para la introducción de direcciones en mapas.

Infocampus te permite, al publicar anuncios, añadir diversos elementos adicionales, como imágenes, videos de YouTube (hablaremos de esto en otro post), videos propios y mapas. En el caso de los mapas, el problema fundamental era cómo pasar, de una manera cómoda y precisa, una dirección física, con calle, número, código postal… al mapa.

Gracias a la clase GClientGeocoder, podemos obtener la latitud y longitud, a partir de una dirección física. Por ejemplo, al buscar “Universidad de Alicante”, te devuelve las coordenadas 38.382199,-0.514744.

El funcionamiento básico de la clase GClientGeocoder es el siguiente:

// se define un objeto de tipo GClientGeocoder
geocoder = new GclientGeocoder();
// se solicita la resolución de la dirección
geocoder.getLatLng(“Universidad de Alicante”, function(point) {
if (!point) alert(”La direccion no ha sido encontrada”);
else alert(“La posición es: ” + point.toUrlValue();
});

Pero habría un problema, ¿que pasaría si queremos apuntar a un departamento en concreto?, ¿conoce Google todas las direcciones del mundo?, ¿resuelve con precisión cualquier dirección?. Es obvio que Google no conoce todas las direcciones del mundo, y menos direcciones internas como puedan ser los departamentos o aulas de una universidad, por lo que necesitamos un método para una vez que hemos llegado a la zona aproximada, podamos apuntar con precisión la posición exacta.

Para esto, utilizamos la clase Gevent, definiendo dos eventos que permitan al usuario seleccionar la posición exacta, bien pinchando en el mapa o bien arrastrando el puntero:

dragend: Se define sobre el puntero, y se lanzará cuando se suelte el puntero en la posición deseada, una vez arrastrado.

click: Se define sobre el mapa, y se lanzará al hacer click en la posición deseada del mapa.

Un ejemplo de la definición de ambos eventos:

// evento dragend sobre el puntero
GEvent.addListener(marker, “dragend”, function() {
alert(“Nuevas coordenadas: ” + marker.getPoint().toUrlValue());
});

// evento click sobre el mapa
GEvent.addListener(map,”click”, function(overlay,latlng) {
alert(“Nuevas coordenadas: ” + latlng.toUrlValue());
});

Juntando ambos códigos, conseguiríamos tener la aplicación que permita introducir direcciones en un mapa. Vemos el código completo:

// objetos globales
var geocoder = null;
var map= null;
var marker=null;

function initialize() {
if (GBrowserIsCompatible()) {
// se define el mapa
map = new Gmap2(document.getElementById(”mapa”));
// control básico para el mapa
map.addControl(new GsmallMapControl());
// objeto GClientGeocoder
geocoder = new GClientGeocoder();
}
}

function showAddress(address) {
if (map==null) initialize();

if (geocoder) {
// resuelve la dirección
geocoder.getLatLng(address, function(point) {
if (!point) {
alert(”La direccion no ha sido encontrada”);
}
else {
// centra el mapa, guarda la posición y añade el puntero
map.setCenter(point, 13);
if (marker!=null) map.removeOverlay(marker);
marker = new GMarker(point,{draggable: true});

// con ayuda de Jquery se guardan las coordenadas
(”#coordenadas”).attr(”value”,point.toUrlValue());

// añade los eventos para ajustar la posición
GEvent.addListener(marker, “dragend”, function() {
var punto = marker.getPoint();
$(”#coordenadas”).attr(”value”,punto.toUrlValue());
});
GEvent.addListener(map,”click”, function(overlay,latlng) {
marker.setPoint(latlng);
$(”#coordenadas”).attr(”value”,latlng.toUrlValue());
});

// añade el puntero “arrastrable”
map.addOverlay(marker);
} // fin else
}); // fin de la llamada a GClientGeocode
} // fin de la función showAddress

// llamada a la función (desde un input o directamente)
showAddress();

Podeis ver la aplicación en funcionamiento en el siguiente enlace: http://anuncios.infocampus.es/publicar.

En próximos posts veremos algunas cosas más sobre mapas: cómo generar archivos KML que puedan ser leídos desde Google Maps/Earth, utilizar la nueva API para obtener mapas estáticos…

Enlaces de interés: