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

Transcripción

Marcadores y +++ - Benemérita Universidad Autónoma de Puebla
Visualización de Información
Marcadores y +++
Dr. Ivo H. Pineda Torres
Facultad de Ciencias de la Computación
Benemérita Universidad Autónoma de Puebla
Otoño 2012
CAPÍTULO 5
Marcando un lugar. usando un marcador que es una imagen colocada
en un lugar determinado.
Como dijimos se debe tener un mapa disponible con sus propiedades
para poder trabajar sobre él. Pues adelante jóvenes, que la
información no puede esperar.
El marcador se debe crear y luego colocar.
2 of 31
Marcando simplemente
(function() {
window.onload = function() {
// Creación del obejtoy sus propiedades
// we want to pass to the map
var options = {
zoom: 12,
center: new google.maps.LatLng(40.7257, -74.0047),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Creando el mapa
var map = new google.maps.Map(document.getElementById(’map’)
};
})();
3 of 31
Marcando el camino
//Poniendo la marca en un lugar dado por el centro
var marker = new google.maps.Marker({
position: new google.maps.LatLng(40.7257, -74.0047),
map: map
map: map,
title: ’Casilla 1188’<--------});
4 of 31
Esto es muy util para nuestro proyecto
Tooltip: Es la caja donde se añade texto que acompaña el marcador.
5 of 31
Así
Los marcadores se les puede cambiar el color, en nuestro caso, si se
desea mostrar los marcadores por casilla en cada elección deberán ser
de diferente color.
Elección 2006 verde, elección 2012 rojo
6 of 31
Asi sería la marca
// Adding a marker to the map
var marker = new google.maps.Marker({
position: new google.maps.LatLng(40.7257, -74.0047),
map: map,
title: ’Click me’,
icon: ’http://gmaps-samples.googlecode.com/svn/trunk/markers
});
7 of 31
(function() {
window.onload = function() {
// Creación del objeto con propiedades y pasarlos al mapa
var options = {
zoom: 12,
center: new google.maps.LatLng(40.7257, -74.0047),
mapTypeId: google.maps.MapTypeId.ROADMAP};
// Creating the map
var map = new google.maps.Map(document.getElementById(’map’)
// Poniendo las marcas
var marker = new google.maps.Marker({
position: new google.maps.LatLng(40.7257, -74.0047),
map: map,
title: ’Click’,
icon: ’http://gmaps-samples.googlecode.com/svn/trunk/markers
});};})();
8 of 31
Mostrando información adicional
En nuestro caso deseamos añadir información adicional a cada
marcador, la cual indicará:
• Distrito, número de la casilla y tipo.
• Partido Ganador para presidente
• Partido ganador para diputados
• Partido ganador para senadores.
9 of 31
Creación y control del tamaño de la ventana
var infowindow = new google.maps.InfoWindow({
content:’<div class="info">Info: Casilla </div>’
});
En el CSS:
.info {
width:}
250px;
¿Qué te sugiere lo anterior ?¿Qué tipo de eventos se pueden disparar
al hacer Click?
10 of 31
Eventos y el listener
Cuando se hace click tres eventos pueden ocurrir y podemos
seleccionar uno de estos:
1
mousedown Ocurre primero cuando se mantiene presionado el
botón del mouse.
2
mouseup Ocurre cuando se libera el botón.
3
click Ocurre después que los dos anteriores pasaron.
Algo similar ocurre cuando se presiona una tecla:
1
keydown
2
keyup
3
keypress
11 of 31
Event Listener
Estos eventos tiene en común que pueden ser capturados por el
código y por ende hacer algo deseado, como conectarse a la base de
datos y obtener la información sobre la casilla en cuestión.
// Creating an InfoWindow with the content text: "Hola Mexic
var infowindow = new google.maps.InfoWindow({
content: ’Hola Mexicanos’
});
// Añadir un evento click event al marcador
google.maps.event.addListener(marker, ’click’, function() {
infowindow.open(map,marker);
// Aca va el código a ejecutarse...
});
12 of 31
Se verá así
13 of 31
Más marcas en el mapa
En nuestro caso necesitamos poner varios marcadores en nuestro
mapa y como sabrás no es recomendado hacerlo a mano, para eso
estamos aca para CREAR una forma segura y rápida .
14 of 31
Más marcas en el mapa
En nuestro caso necesitamos poner varios marcadores en nuestro
mapa y como sabrás no es recomendado hacerlo a mano, para eso
estamos aca para CREAR una forma segura y rápida .
Una recomendación será hacer uso de arreglos y lazos. ¿Arreglos en
JavaScript? Siiiiii
Arreglos en JS son una colección de variables y puede contener lo que
Ud. desee. Recuerda que ya tenemos guardadas las coordenadas de
cada casilla y pensando a futuro debe tener un método de captura
para añadir nuevas casillas o borrar otras en nuestro mapa.
Veamos como lo haremos.
14 of 31
Desplegando en una pasada las marcas de nuestras
casillas
Se asume que se ha creado el mapa, se le indicado el centro, se han
definido sus propiedades,
//Creación del arreglo
var CasillasPue = [];
//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.push(new google.maps.LatLng(47.620, -122.347));
No se te ocurra hacerlo a mano que eso quita puntos!!!!!!
15 of 31
asi es mejor
// Colocación de las marcas por cada elemento del arreglo
for (var i = 0; i < places.length; i++) {
// Creación del nuevo marcador
var marker = new google.maps.Marker({
position: CasillasPue[i],
map: map,
title: ’Casilla ’ + i); }
16 of 31
asi es mejor
// Colocación de las marcas por cada elemento del arreglo
for (var i = 0; i < places.length; i++) {
// Creación del nuevo marcador
var marker = new google.maps.Marker({
position: CasillasPue[i],
map: map,
title: ’Casilla ’ + i); }
Como lo podrias mejorar
16 of 31
asi es mejor
// Looping através del arreglo CasillasPue
for (var i = 0; i < places.length; i++) {
// Creating a new marker
var marker = new google.maps.Marker({
position: CasillasPue[i],
map: map,
title: ’Casilla ’ + i
});
}
17 of 31
Desde HTML
<html><h2>Read File in Javascript</h2>
<script language="JavaScript">
function openFile() {
window.location= ’file:///’ + document.form.selectedFile.val
</script>
<body>
<form name="form">
<input type="file" name="selectedFile">
<input type=button onClick="openFile()" value="Open File">
</form> </body></html>
y luego read file with javascript para llenar el arreglo y proceder a
marcar en el mapa!!!!
18 of 31
Poniendo Información en las ventanas
La idea aca es que cuando se haga click sobre el marcador de la
casilla una ventana tipo InfoWindow debe salir, justamente después
de haber creado la marca:
// Adding an event-listener
google.maps.event.addListener(marker, ’click’, function() {
// Creating a new infowindow
var infowindow = new google.maps.InfoWindow({
content: ’Place number ’ + i
});
infowindow.open(map, marker);
}});
Problema, se pasan variables en vez de valores, con una cerradura o
çlosure"se arregla !!!
19 of 31
Tenemos un problema
20 of 31
Solución: con funciones anónimas
(function(i, marker) {
// Creating the event listener. It now has access to the val
// i and marker as they were during its creation
google.maps.event.addListener(marker, ’click’, function() {
var infowindow = new google.maps.InfoWindow({
content: ’Place number ’ + i
});infowindow.open(map, marker);
});
})(i, marker);
21 of 31
Desplegar varias informaciones de una casilla, en
varias ventanas
22 of 31
Variables globales en JavaScript
Retienen la información del objeto InfoWindow y reusamos, creación
debe ser fuera del loop:
// Declara infowindow como var global fuera del loop
var infowindow;
// Add a click event to the marker
google.maps.event.addListener(marker, ’click’, function() {
// Check to see if the infowindow already exists
if (!infowindow) {
// Create a new InfoWindow object
infowindow = new google.maps.InfoWindow();
}});// Mostrar contenido de InfoWindow
infowindow.setContent(’Place number ’ + i);
// Asociando InfoWindow al marcador
infowindow.open(map, marker);});
23 of 31
Ajustar los marcadores en la vista
24 of 31
Ajustar los marcadores en la vista
Debemos crear el objeto que que define el área donde se colocarán los
marcadores y es por eso que es importante definir o tener las
coordenadas de lo que será nuestro entorno o marco del mapa.
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(37.775,-122.419),
new google.maps.LatLng(47.620,-73.986));
25 of 31
Manejo de datos espaciales, que lindo y
automáticamente
Pasos que se deben seguir para lograr que todos los marcodres
queden dentro de la vista
1
Crear un ojeto vacio para definir el marco.
2
Extender el objeto los datos que se tienen de manera que el API
determine las esquinas Sw y NE.
3
Ajustar el mapa de acuerdo al rectángulo que se definió.
26 of 31
Creación del objeto vacio, extensión y AJUSTE
// C r e a t i n g a LatLngBounds o b j e c t
v a r bounds = new g o o g l e . maps . LatLngBounds ( ) ;
27 of 31
Creación del objeto vacio, extensión y AJUSTE
// C r e a t i n g a LatLngBounds o b j e c t
v a r bounds = new g o o g l e . maps . LatLngBounds ( ) ;
// Looping through the places array
for (var i = 0; i < places.length; i += 1) {
[...]
// Extending the bounds object with each LatLng
bounds.extend(places[i]);}
// A d j u s t i n g t h e map t o new b o u n d i n g box
map . f i t B o u n d s ( bounds )
27 of 31
QUE TAL SI AÑADIMOS RIO DE
JANEIRO(37.09,-95.71) AL viewport
28 of 31
QUE TAL SI AÑADIMOS RIO DE
JANEIRO(37.09,-95.71) AL viewport
Ver código completo marcado como Listing 5-26 en la pp 98 o 116
del pdf
28 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
29 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
2
Marcadores con color:
http://www.benjaminkeen.com/?p=105
29 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
2
Marcadores con color:
http://www.benjaminkeen.com/?p=105
3
Marcadores de Mapito:
http://www.mapito.net/map-marker-icons.html
29 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
2
Marcadores con color:
http://www.benjaminkeen.com/?p=105
3
Marcadores de Mapito:
http://www.mapito.net/map-marker-icons.html
4
Creador de íconos de google Maps: http:
//www.powerhut.co.uk/googlemaps/custom_markers.php
29 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
2
Marcadores con color:
http://www.benjaminkeen.com/?p=105
3
Marcadores de Mapito:
http://www.mapito.net/map-marker-icons.html
4
Creador de íconos de google Maps: http:
//www.powerhut.co.uk/googlemaps/custom_markers.php
5
Sombreador de ícnos de Google:
http://www.cycloloco.com/shadowmaker/shadowmaker.htm
29 of 31
donde obtener íconos
1
Iconos para mapas;
http://code.google.com/p/google-maps-icons/
2
Marcadores con color:
http://www.benjaminkeen.com/?p=105
3
Marcadores de Mapito:
http://www.mapito.net/map-marker-icons.html
4
Creador de íconos de google Maps: http:
//www.powerhut.co.uk/googlemaps/custom_markers.php
5
Sombreador de ícnos de Google:
http://www.cycloloco.com/shadowmaker/shadowmaker.htm
6
Fábrica Mapicon:http://www.cartosoft.com/mapicons/
29 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
2
Como cambiar el ícono del marcador.
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
2
Como cambiar el ícono del marcador.
3
Asociar un ventana tipo Infowindow a un marcador
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
2
Como cambiar el ícono del marcador.
3
Asociar un ventana tipo Infowindow a un marcador
4
Asociar un evento a los objetos
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
2
Como cambiar el ícono del marcador.
3
Asociar un ventana tipo Infowindow a un marcador
4
Asociar un evento a los objetos
5
Como poner varias marcas en el mapa
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
Resumen
1 Como poner un marcador en el mapa.
2
Como cambiar el ícono del marcador.
3
Asociar un ventana tipo Infowindow a un marcador
4
Asociar un evento a los objetos
5
Como poner varias marcas en el mapa
6
Como ajustar automáticamente la vista para ver variosmarcadores.
Por lo que ahora esás preparado para hacer la etapa de marcar en
nuestro sistema de Información Geográfico. Avanzamos con paso
firme.
CAPITULO 6 te da información de como utilizar otros íconos, tu
puedes decidir otros .
30 of 31
que tenemos
!!México, SIN PRI
31 of 31

Documentos relacionados

Visualización de Información - Capit. 7

Visualización de Información - Capit. 7 // 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 = docum...

Más detalles