Google Maps se ha extendido entre los internautas muy rápidamente. Es una herramienta muy útil a la hora de encontrar sitios, lugares recomendados, pasear por alguna ciudad gracias al Street View (hace poco se publico en España para las ciudades de Madrid, Barcelona y otras más). Veamos como integrar un mapa dentro de nuestra página Web gracias a la potente API de Google Maps.
Para poder usar la API dentro de nuestro sitio Web debemos registrar el dominio en la API de Google Maps para obtener una llave válida y poder usar la API. Para ello usar este enlace: http://www.google.com/apis/maps/signup.html
Después de leer y aceptar el contrato de licencia y escribimos el dominio en el cuadro de texto. Por ejemplo, para el caso debería escribir http://www.a2sistemas.com
Después solo queda pulsar el botón “Generate API Key”. Al pulsar el botón se cargará una página indicándonos cual es nuestra API Key y mas abajo un pequeño ejemplo de código para insertar en nuestra web. Es el Hello World de Google Maps.
Por cierto, debemos disponer una cuenta Google para usar este servicio. Si no dispones de cuenta Google, puedes crearte una siguendo el enlace: https://www.google.com/accounts/NewAccount
Veamos el siguiente código:
Google Maps JavaScript API Example<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script
src="http://maps.google.com/maps?file=api&v=2&key=APIKEY"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}
//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>
</html>
El código anterior crea un mapa dentro de un DIV con id “map” de 500px con 300px, situando el centro del mapa en las coordenadas: 37.4419, -122.1419.
Recordad que hay que cambiar en la llamada del primer <script> el valor de “key=” por el de vuestro dominio. De lo contrario aparecerá un alert() informando de un error en la clave.
Puedes ver un ejemplo del código anterior aquí.
Para ello hay que modificar la siguiente linea:
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
setCenter es un método que nos permite indicar cuál será el centro inicial del mapa. Usando una latitud y una longitud. Para conocer estos datos de cualquier punto del planeta de forma exacta, usaremos también Google Maps. Para ello abrimos en nuestro navegador Web la dirección http://maps.google.es/ ahora buscamos la úbicación de la cuál deseamos obtener la latitud/longitud, para aseguranos de que la ubicación esté centrada, pulsando con el botón derecho del ratón seleccionamos la opción Centrar mapa aquí ahora pegamos el siguiente código Javascript en la barra de direcciones del navegador Web y pulsamos Intro:
javascript:void(prompt('',gApplication.getMap().getCenter()));
Se abrirá un cuadro de diálogo con la latitud y longitud del centro del mapa. ¡Perfecto!
Para poder interactuar con el mapa, moverte por él, hacer zoom y cambiar el tipo de mapa, hay que insertar los controles para ello:
map.addControl(new GLargeMapControl()); map.addControl(new GScaleControl()); map.addControl(new GMapTypeControl());
Puedes visualizar un ejemplo aquí.
Ahora vamos a insertar un marcador en el mapa, justo en el centro inicial. Cuando se haga “click” al punto se centrará la vista al punto en cuestión. Además tendrá un globo con información. Se pueden añadir tantos puntos como se quieran y donde quieran. Pero para este caso vamos a añadir solo uno:
var punto = new GLatLng(41.548929,2.42609); var marcador = new GMarker(punto); GEvent.addListener(marcador, "click", function() { map.panTo(new GLatLng(41.548929,2.42609)); }); map.addOverlay(marcador); marcador.openInfoWindowHtml("<b>Mi primer PUNTO</b>");
Con la función GMarker creamos el marcador en el punto localizado por la variable punto.
Con GEvent, creamos un evento al hacer click en marcador, para este caso lo que hace el evento es ir a la posición ( map.panTo ) 41.548929,2.42609 y con openInfoWindowHtml abrimos una ventanita en forma de globo con información en formato Html.
Puedes ver el resultado aquí y también aquí
Puedes obtener más ayuda e información con ejemplos en el sitio Web de la API de Google Maps. Toda la documentación sobre todo lo que puedes llegar a crear. Un ejemplo es la siguiente aplicacion: el tráfico maritimo y aéreo de España en tiempo real: http://www.atlantic-source.com/trafico-maritimo ¡Genial!
De momento eso es todo, en una futura entrega hablaremos de como cargar puntos geográficos dinámicamente desde una base de datos o vía un archivo XML.
Uno de los lenguajes que nos sirve para poder hacer desarrollos más vistosos, en el sentido de animaciones o realizar efectos, fue en su momento javascript. Pero gracias a la aparición de Jquery podemos realizar muchas más cosas más fácilmente de lo que podiamos hacer con Javascript. En este caso queremos exponer el plugin de jquery “accordion”, esto nos permite hacer unos menús desplegables que hoy en día se usan en Webs reconocidas como por ejemplo la de Apple. En este tipo de menús constan de apartados importantes que contienen un “listado” de enlaces que dan accesos a los distintos apartados de la web. El funcionamiento es sencillo, simplemente cuando seleccionas uno de estos grandes apartados se despliega el menú que contiene dando paso a la lista de enlaces de ese ámbito. Veamos un ejemplo con el menú de Apple:
Vemos en la parte izquerda este tipo de menu.
Estos menús se realizan con el uso de los tags UL i LI que nos permiten realizar listados. En estos tags se le deben añadir los id’s pertinentes para que se pueda identificar el elemento que se selecciona y se pueda desplegar. Este es un ejemplo:
<ul class=”drawers” id=”menu”>
<li class=”drawer”><h2 class=”drawer-handle”>Sección 1</h2>
<ul class=”submenu”>
<li class=”elemento”><a href=”#”>Elemento 1.1</a></li>
<li class=”elemento”><a href=”#”>Elemento 1.2</a></li>
<li class=”elemento”><a href=”#”>Elemento 1.3</a></li>
<li class=”elemento”><a href=”#”>Elemento 1.4</a></li>
<li class=”elemento”><a href=”#”>Elemento 1.5</a></li>
<li class=”elemento”><a href=”/”>Salir</a></li>
</ul>
</li>
<li class=”drawer”><h2 class=”drawer-handle”> Sección 2 </h2>
<ul class=”submenu”>
<li class=”elemento”><a href=”#”>Elemento 2.1</a></li>
<li class=”elemento”><a href=”#”>Elemento 2.2</a></li>
<li class=”elemento”><a href=”#”>Elemento 2.3</a></li>
</ul>
</li>
</ul>
Este es un sencillo menú con 2 apartados con varios subelementos cada uno de los apartados. Una vez hecho esto tendremos que inicializar el menú y dar la acción de despliegue en Jquery. Tanto se puede desplegar con un click del ratón, como simplemente pasando el ratón por encima (al hacer hover). La inicialización (que debería ir englobada dentro del <head> por ejemplo) de este menú podria ser tal que así:
$(document).ready(function () {
$(’LI.drawer UL:not(:first)’).hide();
$(’LI.drawer UL:first’).addClass(’open’);
$(’H2.drawer-handle’).click(function () {
$(’LI.drawer UL:visible’).hide();
$(’H2.open’).removeClass(’open’);
$(this).next().show(”slow”);
$(this).addClass(’open’);
});
});
En esta inicialización empezamos cerrando todos los elementos principales menos el primero (cada uno lo puede hacer a su gusto). Entonces se le añade a este primer elemento la clase “open”. Entonces solo se debe determinar con que evento se mostraran los elementos de los otros submenus, en el ejemplo seria con el click del elemento principal. Entonces se esconde el elemento actual, se le quita la clase open y se le asigna al nuevo elemento que se mostrará.
Son menus bastante útiles y vistosos para mostrar los accesos a los diferentes apartados de la web de una manera organizada y vistosa.
Con el aumento de la asequibilidad de espacio web y ancho de banda, el creciente uso de módems de alta velocidad, y la abundancia de la aplicación de tecnologías como Flash, audio y video, viene la tentación de la sobreexplotación en el diseño web.
Una característica importante que siempre ha diferenciado a los buenos diseñadores de los malos es el limitar cada nueva tecnología que viene. Los buenos diseñadores deben centrarse en primer lugar en la funcionalidad y asegurarse de que la página web logre los objetivos para los que fue creada, mientras que los malos diseñadores hacer uso gratuito de elementos como gráficos, animaciones flash y javascript, simplemente “porque pueden” o porque ” se ve bien “.
“Minimalismo” es un término acuñado en el arte y la literatura para describir un movimiento hacia la extrema simplificación de forma y color. Extrapolando el concepto a las páginas web, se refiere a diseño, colores y otros aspectos de la presentación, a la que la dimensión de la usabilidad se ha añadido.
Del minimalismo es la estética y la funcionalidad de trabajar juntos. En diseño web, el minimalismo implica la eliminación de todos los adornos innecesarios, centrándose en el usuario, y la creación de una interfaz que es al mismo tiempo agradable a la vista, fácil de navegar, intuitiva y eficaz en ayudar a los usuarios alcanzar sus objetivos de manera rápida y sin esfuerzo.
Minimalismo se aplica a muchos aspectos de diseño web. Por ejemplo:
En resumen, un diseño web minimalista requiere:
Durante el desarrollo de un proyecto surgen nuevos elementos o cambios que se van añadiendo al código que generamos. Con el avance del proyecto se tiende a no ser muy metódico, lo que provoca que se el resultado final sea igual de funcional y que cumpla los requisitos pero que para nosotros mismos, los desarrolladores, sea un verdadero caos mantener y comprender el proyecto. El caos que estoy comentado se agrava cuantas más personas están dedicadas al proyecto.
Estos consejos o puntos a tener en cuenta son específicos para el HTML, pero si bien, la mayoría de estos casos pueden ser aplicados a otros lenguajes.
Si ya dispones de algo más de soltura, usa siempre que sea posible el modo STRICT en el doctype.
Recursos:
Los caracteres especiales deben ir codificados según el estándar, nos evitaremos problemas con las validaciones de la W3C.
Recursos:
Con la indentación se consiguen dos cosas:
Mantener separados los archivos CSS y de Javascript es una buena idea, pero siempre pensando en que mantener muchos archivos “externos” también puede suponer un problema, hay que encontrar la justa medida en función de la envergadura del proyecto.
La idea es poder hacer modificaciones sin necesidad de modificar TODOS los archivos del proyecto.
Es fundamental conocer las propiedades de los tags HTML, aunque los navegadores consigan mostrar lo que queremos mostrar hay que tener en cuenta la estandarización, si todos cumplimos con dichos estándares nuestro proyecto Web se podrá visualizar dentro 10 años sin problemas, de lo contrario nadie te puede asegurar que si ahora se ve “bien” se siga viendo en el futuro.
Cuando hemos trabajado siempre con tablas y empezamos a trabajar en una estructura con capas (divs), nos puede suceder que entremos en lo que los desarrolladores profesionales llamamos “divitis”. Esto produce un uso excesivo de div’s para todo, lo cuál no es bueno. Hay que tratar de mantener la estructura simple y clara.
Recursos:
Claros y descriptivos, así deben ser los nombres de las clases. Cómo las variables en los lenguajes de programación, se debe tratar de aplicar un sentido semántico a lo que se refiere ese nombre. Lo ideal seria poder identificar dentro de un archivo CSS a que aplica dicha clase sólo con leer su nombre.
La validación de nuestro trabajo es mucho más que para poner el icono en el pie de página. La validación implica mantener una mínima calidad en lo que producimos, no implica que esté mejor o peor hecho, pero si nuestro código valida con el estándar nos aseguramos de que funcionará dentro de un tiempo igual que el primer día.
Recursos:
La lectura de un código se hace de forma natural, de arriba hacía abajo. No tiene mucho sentido colocar el píe de página antes que el contenedor principal o menú de navegación. Funcionar, funcionará seguro.
Por poco que te esfuerces, notarás que aplicando unos sencillos pasos en la fase de desarrollo, los futuros cambios pueden hacerse más llevaderos ya que todo tendrá lógica. Es una gran ventaja trabajar sobre un código limpio y ordenado.
La primera vez costará seguir al pie de la letra muchos de los aspectos comentados. Requieren pararse a pensar un poco más antes de ponerse manos a la obra, pero con el tiempo todo se hace más sencillo y con el tiempo llega la recompensa.
Ha caido el uso del Google Chrome, desde su lanzamiento. Sin embargo, se mantiene en un 0,74% de cuota de mercado, aun por debajo de Opera, despues de llegar a alcanzar hasta un 1,16% de cutoa en Abril de este año, según los datos estadísticos de Market Share.
Quizá una de las posibles razones que expliquen esta carrera a desaparecer es el hecho de que quizá no causó todo el impacto que habría pronosticado Google que tendría. Porque, aunque se trate de un navegador novedoso y potente, todas las Webs de hoy en día ya funcionan con soporte para el IE7, IE6 y FF3 y FF2, y añadir este otro navegador en la ecuación significa añadir otra cifra de peso en el coste de las maquetaciones. Lo que no vale la pena resolver, al tratarse de un navegador con tan poca cuota de mercado. Produciendo en consecuencia que un usuario se encuentre en más de una ocasión con páginas Web que no son compatibles con el navegador. Provocando su desuoso por incompatibilidad y así… El pez que se muerde la cola.
Probablemente, hubiera sido un puntazo que el grado de compatibilidad (a nivel de DOM y soporte Javascript) hubiese sido bastante similar al del Firefox 3, para luego, al competir por la misma cuota que el FF y derratorlo, cambiar, imponer sus reglas. Probablemente estaríamos hablando de cifras de descarga que aumentan progresivamente y no que se desploman. Pero el Firefox es Gecko y el Google es Webkit, como el Safari. Dos mundos diferentes.
La incompatibilidad del Internet Explorer es una gran arma con la que juega Microsoft. El coste de los desarrollos de las Webs 2.0 se ve afectado en gran medida por satisfacer este punto en particular en cuanto queremos ofrecer una compatibilidad que abarque el no menos importante 19,97% de cuota que representa el Firefox en el mercado.
El pasado 19 de Octubre publicamos en este blog unas estadísticas del uso del iPhone en la Web. Y en relación a estas estadísticas y a la notable importancia que ha ganado este dispositivo dentro de los accesos a las Webs a través de dispositivos móviles, nos hemos planteado cómo adaptar las Webs o desarrollar aplicaciones para que sean compatibles con el mismo.
Para desarrollar aplicaciones con el iPhone nos encontramos con 2 opciones:
Los compilados se entienden bien como todo lo que es realmente un ejecutable en el teléfono que interactúa directamente con él y que no depende del acceso a Internet para su ejecución. Hay que tomar en cuenta las limitaciones del dispositivo, como el hecho de que no puede tener varias aplicaciones abiertas al mismo tiempo, por concepto (según una serie de argumentos que interpone Apple). Estas limitaciones conducen a una forma única de crear el flujo de la aplicación, que no permitiría, por ejemplo, invocar el salto a una URL con el Safari, en medio de un formulario sin guardar antes el estado del mismo en.
Para desarrollar aplicaciones para el iPhone, se cuenta con el Programa para desarrolladores de iPhone que tiene un coste de entre $99 y $299, según el tipo de programa: Standard o Enterprise. Ambas soluciones comportan el entorno de Desarrollo, Pruebas y Distribución (a través de la Web de Apple). También se dispone de un SDK gratuito descargable de la misma Web de Apple, que permite disponer de un entorno de Desarrollo y Pruebas.
Las WebAplicaciones no son más que una especie de hiperenlace a páginas Webs, que se almacenan en el escritorio del dispositivo, que están programadas como cualquier página Web estática o dinámica (en función de si trabaja con rutinas o servicios del lado del servidor) con uso intenso de Javascript. Las mismas pueden ser accedidas desde cualquier ordenador de sobremesa, sin embargo, si su funcionalidad se basa en el DOM de Javascript orientado a la tecnología MultiTouch de su pantalla, no se podrán activar algunas funcionalidades.
Este último parece ser el método más rentable para desarrollar aplicaciones para el iPhone. Sin embargo, crea una barrera al establecer como necesario el acceso a Internet para que puedan funcionar realmente. Lo que no supone ningún problema siempre que haya cobertura.
El iPhone consume el 0,33% de couta del mercado, superando completamente al Windows CE, con solo un 0,06%, según las estadísticas publicadas por Market share.
Hay que tener en cuenta que el iPhone 3G llevaba apenas 5 meses en el mercado para cuando alcanzó en diciembre de 2007 la cuota del 0,10% de uso de la Web, superando los dispositivos móviles que utlizan el Windows CE, con una cuota de 0,06%. Lo que viene a indicar que el iPhone es un dispositivo móvil que, pese a presentar notables limitaciones físicas (como una cámara de 2.0MP que no puede grabar vídeos), se impone en el mercado por su uso. Y tomando en cuenta que se encuentra a la mitad de camino para llegar a la cuota de uso de a Web del Sistema Opertativo Linux, es hora de pensar en que hay que tenerlo en cuenta para cuando se plantea versiones o soportes para dipositivos móviles.
¿Cuáles pueden ser los motivos por los que en la Web el iPhone ofrezca este resultado? He pensado en varios, pero creo que el motivo principal es la misma visualización de las Webs a través del dispositivo. Ver la Web como si estuvieses en tu ordenador de sobremesa (en miniatura) y ampliar con el Zoom la vista para ver cualquier detalle de una página Web, resulta más práctico, que la deformación y deconstrucción de la página para adaptarse a la resolución del dispositivo. También creo que su soporte Javascript es impresionante y puede ser una parte importante, dado que muchas Webs lo requieren para navegar. Podría mencionar el efecto que produce el navegador de la PlayStation3 con este punto en negativo al intentar adoptarlo como un navegador auxiliar de Internet en casa.
¿Pero cómo puede tener estas estadísticas sin incluir un plugin de Flash Player? Es uno de los grandes enigmas. Pero creo principalmente que un gran porcentaje del uso del dispositivo se basa en las WebAplicaciones, más que en la navegación propiamente dicha de la Web con el dispositivo móvil.
Estamos comenzando a conocer el iPhone de cerca para desarrollar aplicaciones basadas en esta plataforma. O para simplemente ofrecer soporte de compatibilidad de este dispositivo móvil en la Web.
La tarea de ajustar la información de las paginas que se pretenden hacer aparecer en primeras posiciones de los resultados es conocida como SEO, sigla en inglés de Search Engine Optimization, optimización para motores de búsqueda.
El SEO consiste en aplicar diversas técnicas para a lograr que los buscadores de Internet sitúen determinada página web en una posición y categoría alta (primeras posiciones) dentro de su página de resultados para determinados términos y frases clave de búsqueda.
También es entendido como las técnicas de desarrollo web que tengan como objetivo mejorar la posición de un determinado sitio web por sus páginas en la lista de resultados de los Motores de Búsqueda que en inglés se identifican como SERPs y forma parte de la jerga de los webmasters hispanohablantes.
La aplicación de técnicas SEO es intensa en sitios web que ofertan productos o servicios con mucha competencia, buscando el posicionar determinadas páginas sobre las de sus competidoras en la lista de resultados (SERPs).
Estrictamente hablando, se posicionan URLs de páginas. Los sitios logran buen posicionamiento como una consecuencia.
Las técnicas SEO pueden ser desmedidas y afectar los resultados naturales de los grandes buscadores por lo que si incumplen las cláusulas y condiciones de uso de los mismos pueden ser consideradas, en algunos casos, como una forma de SPAM, el spamdexing. Aunque de esto queda mucha tinta que correr, porque no todo lo que se hace con ese fin es real.
El trabajo es amplio, ya que el posicionamiento involucra al código de programación, al diseño y a los contenidos. También nos referimos a SEO para definir las personas que realizan este tipo de trabajo.