Foros del Web » Programando para Internet » Javascript »

Autoorientación Mapa Gooogle Maps

Estas en el tema de Autoorientación Mapa Gooogle Maps en el foro de Javascript en Foros del Web. Buenas, Tengo un mapa de google maps obtenido de la API, y lo que quiero ya que obtine unos datos de la base de datos ...
  #1 (permalink)  
Antiguo 09/11/2012, 06:35
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Autoorientación Mapa Gooogle Maps

Buenas,

Tengo un mapa de google maps obtenido de la API, y lo que quiero ya que obtine unos datos de la base de datos en PHP es que si los iconos que se ponen no están dentro de las coordenadas y el zoom que se definen para visualizar el mapa por defecto se reoriente.

¿Cómo lo puedo hacer?
  #2 (permalink)  
Antiguo 09/11/2012, 07:59
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Autoorientación Mapa Gooogle Maps

Ésto te facilitará la vida:
http://hpneo.github.com/gmaps/
  #3 (permalink)  
Antiguo 09/11/2012, 09:36
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por marlanga Ver Mensaje
Ésto te facilitará la vida:
[url]http://hpneo.github.com/gmaps/[/url]
Pero qué debo modificar?
  #4 (permalink)  
Antiguo 09/11/2012, 12:40
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Respuesta: Autoorientación Mapa Gooogle Maps

Y como puedo hacer para que cada vez que pulse un LatLng se me abra una Polyline??
  #5 (permalink)  
Antiguo 09/11/2012, 13:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

Para orientar el mapa para mostrar todos los eventos que quieres primero en PHP has algo que recorra todos los elementos de manera de obtener los 4 valores máximos (margen izquierdo, , derecho, superior e inferior, puedes hacer algo como esto:

Código PHP:
$map_lft=0//margen izq
$map_top=0//margen superior
$map_rgt=0//margen derecho
$map_btn=0// margen inferior

//en el while de tu consulta recorres todas las longitudes y latitudes:

while(){

//si no se ha definido el márgen aún lo creas
if(!$map_lft$map_lft=$MFRcnf['Longitude'];
//si ya está definido revisas si es inferior al del ciclo anterior:
elseif($MFRcnf['Longitude']<$map_lft$map_lft=$MFRcnf['Longitude'];

//haces lo mismo con los otros 4 lados
if(!$map_top$map_top=$MFRcnf['Latitude'];
elseif(
$MFRcnf['Latitude']>$map_top$map_top=$MFRcnf['Latitude'];

if(!
$map_rgt$map_rgt=$MFRcnf['Longitude'];
elseif(
$MFRcnf['Longitude']>$map_rgt$map_rgt=$MFRcnf['Longitude'];

if(!
$map_btn$map_btn=$MFRcnf['Latitude'];
elseif(
$MFRcnf['Latitude']<$map_btn$map_btn=$MFRcnf['Latitude'];


luego aplicas la instruccion bounds que la API de google nos facilita para estos casos indicando los 4 lados:

Código Javascript:
Ver original
  1. var bounds = new google.maps.LatLngBounds(new google.maps.LatLng(<?php echo $map_top ?>,<?php echo $map_lft ?>),new google.maps.LatLng(<?php echo $map_btn ?>,<?php echo $map_rgt ?>));
  2. map.fitBounds(bounds);

----------------------------------------------------

Para crear un polyline al hacer contacto con el mapa puedes hacer algo como esto:
Código Javascript:
Ver original
  1. //primero creas un elemento poligono con el nombre polyshape
  2. var PolyShape = new google.maps.Polygon({
  3.     strokeColor: "#FFF",
  4.     strokeOpacity: 0.8,
  5.     strokeWeight: 2,
  6.     fillColor: "#FFF",
  7.     fillOpacity: 0.35
  8. });
  9.  
  10. // creas un listener al mapa para saber cuando el usuario hace clic
  11. google.maps.event.addListener(map, 'click', function(event) {
  12.     //esto guarda la coordenada en event.latLng
  13.     //ahora creas el poligono en esa coordenada:
  14.     var polyCords = new Array();
  15.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()+0.001,event.latLng.lng());
  16.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()+0.001);
  17.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()-0.001,event.latLng.lng());
  18.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()-0.001);
  19.  
  20. //le das las coordenadas que he inventado en base al clic
  21. PolyShape.setPath(polyCords);
  22. //lo ubicas en el mapa
  23. PolyShape.setMap(map);
  24. });

creo que no me he olvidado de nada, no lo he probado, pero por ahi va
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 09/11/2012, 13:49
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por stramin Ver Mensaje
Para orientar el mapa para mostrar todos los eventos que quieres primero en PHP has algo que recorra todos los elementos de manera de obtener los 4 valores máximos (margen izquierdo, , derecho, superior e inferior, puedes hacer algo como esto:

Código PHP:
$map_lft=0//margen izq
$map_top=0//margen superior
$map_rgt=0//margen derecho
$map_btn=0// margen inferior

//en el while de tu consulta recorres todas las longitudes y latitudes:

while(){

//si no se ha definido el márgen aún lo creas
if(!$map_lft$map_lft=$MFRcnf['Longitude'];
//si ya está definido revisas si es inferior al del ciclo anterior:
elseif($MFRcnf['Longitude']<$map_lft$map_lft=$MFRcnf['Longitude'];

//haces lo mismo con los otros 4 lados
if(!$map_top$map_top=$MFRcnf['Latitude'];
elseif(
$MFRcnf['Latitude']>$map_top$map_top=$MFRcnf['Latitude'];

if(!
$map_rgt$map_rgt=$MFRcnf['Longitude'];
elseif(
$MFRcnf['Longitude']>$map_rgt$map_rgt=$MFRcnf['Longitude'];

if(!
$map_btn$map_btn=$MFRcnf['Latitude'];
elseif(
$MFRcnf['Latitude']<$map_btn$map_btn=$MFRcnf['Latitude'];


Primero de todo, muchas gracias. Segundo, si suponemos que la latitud y la longitud las tengo en $latitud y $longitud. ¿Cómo lo hago?
  #7 (permalink)  
Antiguo 09/11/2012, 13:56
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

si es solo una posición entonces es más fácil, olvida todo lo que puse del bound y simplemente usa:

map.setCenter(new google.maps.LatLng(<?php echo $latitud; ?>,<?php echo $longitud; ?>);
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 12/11/2012, 13:25
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por stramin Ver Mensaje

Para crear un polyline al hacer contacto con el mapa puedes hacer algo como esto:
Código Javascript:
Ver original
  1. //primero creas un elemento poligono con el nombre polyshape
  2. var PolyShape = new google.maps.Polygon({
  3.     strokeColor: "#FFF",
  4.     strokeOpacity: 0.8,
  5.     strokeWeight: 2,
  6.     fillColor: "#FFF",
  7.     fillOpacity: 0.35
  8. });
  9.  
  10. // creas un listener al mapa para saber cuando el usuario hace clic
  11. google.maps.event.addListener(map, 'click', function(event) {
  12.     //esto guarda la coordenada en event.latLng
  13.     //ahora creas el poligono en esa coordenada:
  14.     var polyCords = new Array();
  15.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()+0.001,event.latLng.lng());
  16.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()+0.001);
  17.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()-0.001,event.latLng.lng());
  18.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()-0.001);
  19.  
  20. //le das las coordenadas que he inventado en base al clic
  21. PolyShape.setPath(polyCords);
  22. //lo ubicas en el mapa
  23. PolyShape.setMap(map);
  24. });

creo que no me he olvidado de nada, no lo he probado, pero por ahi va
Lo que yo quería aquí no era exactamente al hacer contacto con el mapa sino con un marcador. Como esto (http://www.bertair.com/index.php?option=com_wrapper&view=wrapper&Itemid=4 3).
  #9 (permalink)  
Antiguo 13/11/2012, 09:04
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Código Javascript:
Ver original
  1. // creas un listener al mapa para saber cuando el usuario hace clic
  2. google.maps.event.addListener(map, 'click', function(event) {

creo que no me he olvidado de nada, no lo he probado, pero por ahi va[/QUOTE]

Si en vez de Map pongo el nombre del Marker?
  #10 (permalink)  
Antiguo 13/11/2012, 09:35
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

justamente

en este caso no necesitas la posición del mouse, solo la posición del marcador, así que puedes omitir el "event"

Código Javascript:
Ver original
  1. google.maps.event.addListener(marker, 'click', function() {
  2. ...
  3. }
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #11 (permalink)  
Antiguo 14/11/2012, 04:28
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Para crear un polyline al hacer contacto con el mapa puedes hacer algo como esto:
Código Javascript:
Ver original
  1. //primero creas un elemento poligono con el nombre polyshape
  2. var PolyShape = new google.maps.Polygon({
  3.     strokeColor: "#FFF",
  4.     strokeOpacity: 0.8,
  5.     strokeWeight: 2,
  6.     fillColor: "#FFF",
  7.     fillOpacity: 0.35
  8. });
  9.  
  10. // creas un listener al mapa para saber cuando el usuario hace clic
  11. google.maps.event.addListener(map, 'click', function(event) {
  12.     //esto guarda la coordenada en event.latLng
  13.     //ahora creas el poligono en esa coordenada:
  14.     var polyCords = new Array();
  15.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()+0.001,event.latLng.lng());
  16.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()+0.001);
  17.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat()-0.001,event.latLng.lng());
  18.     polyCords[polyCords.length]=new google.maps.LatLng(event.latLng.lat(),event.latLng.lng()-0.001);
  19.  
  20. //le das las coordenadas que he inventado en base al clic
  21. PolyShape.setPath(polyCords);
  22. //lo ubicas en el mapa
  23. PolyShape.setMap(map);
  24. });

creo que no me he olvidado de nada, no lo he probado, pero por ahi va[/QUOTE]

Ahora que me disponía a probarlo creo que te has confundido. Me refería a una polilínea (Polyline) y no a un polígono(Polygon).
  #12 (permalink)  
Antiguo 14/11/2012, 05:39
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

No, el que se ha confundido eres tu, mira:

Cita:
Iniciado por carlosuc99 Ver Mensaje
Y como puedo hacer para que cada vez que pulse un
LatLng se me abra una Polyline??
De todos modos es lo mismo, solo cambias polyline por polygon o como se llame.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #13 (permalink)  
Antiguo 14/11/2012, 05:58
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por stramin Ver Mensaje
No, el que se ha confundido eres tu, mira:



De todos modos es lo mismo, solo cambias polyline por polygon o como se llame.
Y las coordenadas dónde las pongo? Se supone que un Polyline es una línea que va de un punto a otro.
  #14 (permalink)  
Antiguo 14/11/2012, 06:03
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

no, una polilinea son varias lineas

poli=muchas
linea=lineas

estas lineas forman una figura, hecha por varios puntos que van en un array, la única diferencia con el polígono, es que en el polígono estas lineas tienen un relleno de color.

por lo tanto el mismo polyline lo puedes usar como polygon.

Nota: Los polígonos se cierran solos.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #15 (permalink)  
Antiguo 14/11/2012, 06:15
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por stramin Ver Mensaje
no, una polilinea son varias lineas

poli=muchas
linea=lineas

estas lineas forman una figura, hecha por varios puntos que van en un array, la única diferencia con el polígono, es que en el polígono estas lineas tienen un relleno de color.

por lo tanto el mismo polyline lo puedes usar como polygon.

Nota: Los polígonos se cierran solos.
Si bueno pero yo la utilizo como una línea para unir dos puntos. Aquí el ejemplo del API de Google Maps y auquí la URL https://google-developers.appspot.com/maps/documentation/javascript/examples/polyline-simple

Cómo lo podría hacer con esto.

Ejemplo de código de una polilínea:

Código Javascript:
Ver original
  1. var routes = [
  2.         new google.maps.LatLng(17.997671, -66.615356)
  3.         , new google.maps.LatLng(18.459418, -66.060646)
  4.     ];
  5.  
  6.     var polyline = new google.maps.Polyline({
  7.         path: routes
  8.         , map: map
  9.         , strokeColor: '#ff0000'
  10.         , strokeWeight: 5
  11.         , strokeOpacity: 0.3
  12.         , clickable: false
  13.     });
  14. };
  #16 (permalink)  
Antiguo 14/11/2012, 08:11
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Autoorientación Mapa Gooogle Maps

solo necesitas definir más puntos para hacer más lineas:

var routes = [
new google.maps.LatLng(17.997671, -66.615356)
, new google.maps.LatLng(18.459418, -66.060646)
, new google.maps.LatLng(18.997671, -66.015356)
, new google.maps.LatLng(17.459418, -66.660646)
];

si te fijas la palabra "routes" significa "rutas" o sea que puedes definir varias.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por stramin; 14/11/2012 a las 08:32
  #17 (permalink)  
Antiguo 14/11/2012, 08:44
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Autoorientación Mapa Gooogle Maps

Cita:
Iniciado por stramin Ver Mensaje
solo necesitas definir más puntos para hacer más lineas:

var routes = [
new google.maps.LatLng(17.997671, -66.615356)
, new google.maps.LatLng(18.459418, -66.060646)
, new google.maps.LatLng(18.997671, -66.015356)
, new google.maps.LatLng(17.459418, -66.660646)
];

si te fijas la palabra "routes" significa "rutas" o sea que puedes definir varias.
Ok, gracias. Dejo el código con el que me ha funcionado por si a alguien le interesa.

Código Javascript:
Ver original
  1. //primero creas un elemento poligono con el nombre polyshape
  2.     var PolyLine = new google.maps.Polyline({
  3.         strokeColor: "#FF0000",
  4.          strokeOpacity: 2.0,
  5.         strokeWeight: 2
  6.     });
  7.  
  8.     var polyCords = [
  9.     new google.maps.LatLng(39.490277777778, -0.47861111111111),
  10.     new google.maps.LatLng(40.4936, -3.56676)
  11.     ];
  12.    
  13. // creas un listener al mapa para saber cuando el usuario hace clic
  14.     google.maps.event.addListener(marker, 'click', function() {
  15.  
  16. //le das las coordenadas que he inventado en base al clic
  17.     PolyLine.setPath(polyCords);
  18. //lo ubicas en el mapa
  19.     PolyLine.setMap(map);
  20.     });

Etiquetas: maps, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:17.