Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/11/2012, 13:28
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 10 meses
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