Visualización de Información - Capit. 7

Transcripción

Visualización de Información - Capit. 7
Visualización de Información
Capit. 7
Dr. Ivo H. Pineda Torres
Facultad de Ciencias de la Computación
Benemérita Universidad Autónoma de
Puebla
Ototño 2012
CAPÍTULO 7
Trabajando sobre la InfoWindow, y trucos al respecto
2 of 23
Empecemos con algo así
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head><meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Chapter 7 - InfoWindows Tips and Tricks</title>
<link rel="stylesheet" href="css/style.css" type="text/css"
media="all" />
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/7-x.js"></script>
</head><body>
<div id="map"></div>
3 of 23
</body></html>
Empecemos con estilo:CSS
html , body {
h e i g h t : 100 %;
f o n t −f a m i l y : Verdana , Geneva , A r i a l , H e l v e t i c a , s a n s −
f o n t −s i z e : s m a l l ;
margin : 0 ;
}
#map {
w i d t h : 100 %;
h e i g h t : 100 %;
}
4 of 23
(function() {
// Defining variables to some functions
var map, infoWindow;
window.onload = function() {
// Creating a map
var options = {zoom: 3,
center: new google.maps.LatLng(37.09, -95.71),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map=new google.maps.Map(document.getElementById(’map’),optio
var marker = new google.maps.Marker({
position: new google.maps.LatLng(40.756054, -73.986951),
map: map,
title: ’Click me’
});google.maps.event.addListener(marker, ’click’, function()
// Code that happens after click
});};})();
5 of 23
Cadenas en html
Recuerda que se debe verificar que exista la ventana denominada
Infowindow
// Check to see if an InfoWindow already exists
if (!infoWindow) {
infoWindow = new google.maps.InfoWindow();
}
Ahora ponemos contenido y se puede abrir
<div id="info">
<img src="img/squirrel.jpg" alt="" />
<h2>Mapas son hermosos</h2>
<p>Some sample text</p>
<p><a href="http://www.svennerberg.com">A sample link</a>
</p></div>
6 of 23
7 of 23
Creando un mapa detallado. Añadiendo detalles
En varias ocasiones se necesita incorporar detalles a nuestro mapa.
Estos detalles pueden salir en forma de ventanas de información y
presentando mas detalles sobre l lugar donde se colocó el marcador.
¿Cómo hacerlo? que sugiere está imágen.
8 of 23
Poner más detalles en la InfoWindow
Para lograr esto en vez de crear un segundo mapa en la sección de
html, lo sugerido es crear otro mapa pero dentro del script y en
especial dentro de la ventana. El mapa se asume que ya se le ha
colocado una marca.
g o o g l e . maps . e v e n t . a d d L i s t e n e r ( marker , ’ c l i c k ’ ,
function (){
// C ó d i g o que s e e j e c u t a r á a l h a c e r c l i c k
});
9 of 23
Poner más detalles en la InfoWindow
Para lograr esto en vez de crear un segundo mapa en la sección de
html, lo sugerido es crear otro mapa pero dentro del script y en
especial dentro de la ventana. El mapa se asume que ya se le ha
colocado una marca.
g o o g l e . maps . e v e n t . a d d L i s t e n e r ( marker , ’ c l i c k ’ ,
function (){
// C ó d i g o que s e e j e c u t a r á a l h a c e r c l i c k
});
Esto indica que se necesita crear un contenedor para el nuevo mapa,
para lo que usamos la método genérico DOM
document.createElement().
9 of 23
Poner más detalles en la InfoWindow
Para lograr esto en vez de crear un segundo mapa en la sección de
html, lo sugerido es crear otro mapa pero dentro del script y en
especial dentro de la ventana. El mapa se asume que ya se le ha
colocado una marca.
g o o g l e . maps . e v e n t . a d d L i s t e n e r ( marker , ’ c l i c k ’ ,
function (){
// C ó d i g o que s e e j e c u t a r á a l h a c e r c l i c k
});
Esto indica que se necesita crear un contenedor para el nuevo mapa,
para lo que usamos la método genérico DOM
document.createElement().
Junto a esto se debe definir el tamaño del mapa, y la sugerencia es
que tanto estilo como tamaño controlarlo por separado. (aca es para
que
se comprenda)
9 of 23
Asi serían los primeros pasos
Paso 1 // Crea el elemento div que será el lugar de contenedor con
los detalles del mapa
var detailDiv = document.createElement(’div’);
// Define el tamaño del área
detailDiv.style.width = ’200px’;
detailDiv.style.height = ’200px’;
Posteriomente se necesita hacer referencia a él:
Paso 2 // Apendizar la variable detailDiv al contendero del mapa
document.getElementById(’map’).appendChild(detailDiv);
10 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
11 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
1. Definir el zoom adecuado: 14
11 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
1. Definir el zoom adecuado: 14
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
11 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
1. Definir el zoom adecuado: 14
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
3. Tipo de mapa (satélital, carretera o híbrido). Use getMapTypeId()
Para asegurarse que si se cambian detalles en el mapa principal
tambien se propague al mapa detallado.
11 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
1. Definir el zoom adecuado: 14
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
3. Tipo de mapa (satélital, carretera o híbrido). Use getMapTypeId()
Para asegurarse que si se cambian detalles en el mapa principal
tambien se propague al mapa detallado.
11 of 23
Paso 3
Como ves no se ha creado el mapa y si recuerdas para hacerlo
debemos definir:
1. Definir el zoom adecuado: 14
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
3. Tipo de mapa (satélital, carretera o híbrido). Use getMapTypeId()
Para asegurarse que si se cambian detalles en el mapa principal
tambien se propague al mapa detallado.
Esto nos puede ser útil para no apartarnos de la marca de nuestra
casilla y mostrar los detalles de la misma sin necesidad de irnos a otro
mapa o vista.
11 of 23
Paso 4. Así lo podemos utilizar
var overviewOpts = {
zoom: 14,
center: marker.getPosition(),
mapTypeId: map.getMapTypeId(),
disableDefaultUI: true
};
// Inicializar el mapa y marcarlo
var detailMap = new google.maps.Map(detailDiv, overviewOpts);
var detailMarker = new google.maps.Marker({
position: marker.getPosition(),
map: detailMap,
clickable: false
});
12 of 23
Paso 5: Crear la ventana de información
// Checa s i e x i s t e l a v e n t a n a
i f ( ! infoWindow ) {
infoWindow = new g o o g l e . maps . InfoWindow ( ) ;
}
// Poner c o n t e n i d o en l a InfoWindow
infoWindow . s e t C o n t e n t ( d e t a i l D i v ) ;
// Poner l a InfoWindow en e l mapa
infoWindow . open ( map , m a r k e r ) ;
13 of 23
Pasos en resumen
1. Añadir un evento tipo click
14 of 23
Pasos en resumen
1. Añadir un evento tipo click
2. Crear el mapa detallado poniendo un nuevo elemento < div > y
colocarlo allí.
14 of 23
Pasos en resumen
1. Añadir un evento tipo click
2. Crear el mapa detallado poniendo un nuevo elemento < div > y
colocarlo allí.
3. Crea o reusa una InfoWindow y añadir el mapa detallado
14 of 23
alternativa interesante
Evita que el zoom se haga através de los controles y sea dentro de la
ventana de información.
Antes del Zoom
Después del zoom
15 of 23
Pasos
1. Crea el contenido de la InfoWindow
16 of 23
Pasos
1. Crea el contenido de la InfoWindow
2. Crea la InfoWinodw
16 of 23
Pasos
1. Crea el contenido de la InfoWindow
2. Crea la InfoWinodw
3. Abre la InfoWinodw
16 of 23
Pasos
// C r e a c i ó n d e l c o n t e n e d o r InfoWindow
v a r c o n t e n t = document . c r e a t e E l e m e n t ( ’ d i v ’ ) ;
// Crea e l p á r r a f o con a l g o de t e x t o
v a r p = document . c r e a t e E l e m e n t ( ’ p ’ ) ;
p . innerHTML = ’ T h i s m a r k e r i s p o s i t i o n e d on Manhattan
// Crea un s e g u n d o p á r r a f o con e l
l i n k que s e h a r á
v a r p2 = document . c r e a t e E l e m e n t ( ’ p ’ ) ;
// C r e a c i ó n d e l l i n k
v a r a = document . c r e a t e E l e m e n t ( ’ a ’ ) ;
a . innerHTML = ’ Zoom i n ’ ;
a . h r e f = ’# ’;
17 of 23
Con el elemento < a > creado
El trabajo pesado lo hará:
a . onclick = function () {
// Code g o e s h e r e
}
Pasos para establecer el link:
1. Definir el zoom adecuado: 15
18 of 23
Con el elemento < a > creado
El trabajo pesado lo hará:
a . onclick = function () {
// Code g o e s h e r e
}
Pasos para establecer el link:
1. Definir el zoom adecuado: 15
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
18 of 23
Con el elemento < a > creado
El trabajo pesado lo hará:
a . onclick = function () {
// Code g o e s h e r e
}
Pasos para establecer el link:
1. Definir el zoom adecuado: 15
2. Definir el centro del mapa donde se desea detalle. Use
getPosition() en el lugar donde está ubicado el marcador.
3. si no se desea seguir el link se debe cancelar automáticamente.
18 of 23
Asi irá quedando
a . onclick = function () {
map . s e t C e n t e r ( m a r k e r . g e t P o s i t i o n ( ) ) ;
map . setZoom ( 1 5 ) ;
return false ;
};
19 of 23
Y los párrafos mencionados se deben referenciar
// R e l a c i o n a r l e l s e g u n d o p á r r a f o con e l l i n k
p2 . a p p e n d C h i l d ( a ) ;
// R e l a c i o n a r l o s d o s p á r r a f o s con e l c o n t e n d o r
content . appendChild (p ) ;
c o n t e n t . a p p e n d C h i l d ( p2 ) ;
Se ha añadido código HTML al contenido de una InfoWindow, se ha
controlado el uso del Zoom y se ha incoporado seguior links.
Ver código completo listig 7-8 pp 154-155 (172-173pdf)
CREACIÓN DE LINEAS Y POLIGONOS PARA DELIMITAR ÁREAS.
20 of 23
No a la Reforma Laboral, te explotarán más!!!
!!México, SIN PRI
21 of 23

Documentos relacionados

Marcadores y +++ - Benemérita Universidad Autónoma de Puebla

Marcadores y +++ - Benemérita Universidad Autónoma de Puebla //añadiendo lat y longitud a cada casilla // ( NY, SF y Seattle) CasillasPue.push(new google.maps.LatLng(40.756, -73.986)); CasillasPue.push(new google.maps.LatLng(37.775, -122.419)); CasillasPue.p...

Más detalles