Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/05/2013, 14:11
Avatar de cuasatar
cuasatar
 
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 2 meses
Puntos: 181
De acuerdo Respuesta: ruta absoluta imagen marcador google maps

Bueno, como veras no es nada del otro mundo el script, es muy parecido a la solución de la cual mande el enlace.

La parte que llama a al script es un simple select:

Código HTML:
Ver original
  1. <select name="ciudades" onchange="mostrarMapas(this.value)">
  2.                 <option value="">Seleccione una ciudad:</option>
  3.                    <option value="Ciudad 1">Ciudad 1</option>
  4.                   <option value="Ciudad 2">Ciudad 2</option>
  5.                   <option value="Ciudad 3">Ciudad 3</option>
  6. <div id="cont-map"></div>

La parte ajax es muy sencilla tambien:

Código Javascript:
Ver original
  1. function jsDinamic(direccion,tipo){
  2.   var g=document.createElement("script");
  3.   g.src=direccion;
  4.   g.type=tipo;
  5.   document.body.appendChild(g);
  6.   }
  7.  
  8. function mostrarMapas(str)
  9. {
  10. var xmlhttp;    
  11. if (str=="")
  12.   {
  13.   document.getElementById(""cont-map").innerHTML="";
  14.  return;
  15.  }
  16. if (window.XMLHttpRequest)
  17.  {// code for IE7+, Firefox, Chrome, Opera, Safari
  18.  xmlhttp=new XMLHttpRequest();
  19.  }
  20. else
  21.  {// code for IE6, IE5
  22.  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  23.  }
  24. xmlhttp.onreadystatechange=function()
  25.  {
  26.  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  27.    {
  28.      jsDinamic("https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js","text/javascript");
  29.       jsDinamic("http://maps.google.com/maps/api/js?sensor=false&amp;language=es","text/javascript");  
  30.       jsDinamic("http://midireccion/mapasdinamicos.js","text/javascript");
  31.       document.getElementById("cont-map").innerHTML=xmlhttp.responseText;
  32.     }
  33.   }
  34. xmlhttp.open("GET","mapa.php?ciudad="+str,true);
  35. xmlhttp.send();
  36. }

El archivo php simplemente carga de manera dinamica las listas tal y como lo viste en el enlace que te mostre y cambia en función de la ciudad. Simplemente se encarga de leer un xml, genera la lista y carga el div map-canvas que es donde se mostrara el mapa.

Por ultimo el javascript que hace la "magia" que es casi igual a la solución que viste en la pagina.

Código Javascript:
Ver original
  1. $(function() {
  2.       //esto no importa que centro tenga porque al final en función de la ciudad cambia el centro, solo sirve para inicializar
  3.       var chicago = new google.maps.LatLng(41.924832, -87.697456),
  4.           pointToMoveTo,
  5.           first = true,
  6.           curMarker = new google.maps.Marker({}),
  7.           $el;
  8.      
  9.       var options = {
  10.           zoom: 16,
  11.           center: chicago,
  12.           mapTypeId: google.maps.MapTypeId.ROADMAP
  13.         };
  14.      
  15.       var map = new google.maps.Map($("#map_canvas")[0], options);
  16.       var image = new google.maps.MarkerImage(
  17.         'images/sprite.png'//aqui sospecho que es el error pero es una sospecha
  18.         );
  19.        
  20.       $("#locations li").mouseenter(function() {
  21.         $el = $(this);
  22.         if (!$el.hasClass("hover")) {
  23.        
  24.           $("#locations li").removeClass("hover");
  25.           $el.addClass("hover");
  26.        
  27.           if (!first) {
  28.            
  29.             // Clear current marker
  30.             curMarker.setMap();
  31.                        
  32.             // Set zoom back to Chicago level
  33.             // map.setZoom(10);
  34.           }
  35.          
  36.           // Move (pan) map to new location
  37.           pointToMoveTo = new google.maps.LatLng($el.attr("data-geo-lat"), $el.attr("data-geo-long"));
  38.           map.panTo(pointToMoveTo);
  39.          
  40.           // Add new marker
  41.           curMarker = new google.maps.Marker({
  42.               position: pointToMoveTo
  43.                , title: $el.attr("data-marcador")
  44.               ,map: map
  45.               ,icon: image
  46.            });
  47.          
  48.           // On click, zoom map
  49.           google.maps.event.addListener(curMarker, 'click', function (e) {
  50.              map.setZoom(14);
  51.           });
  52.          
  53.           first = false;
  54.         }
  55.        
  56.       });
  57.      
  58.       $("#locations li:first").trigger("mouseenter");
  59.     });

Gracias por tu colaboración desinteresada. De funcionar funciona, de mostrar el marcador eso si no por eso pido una guia para revaluar la solución.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 03/05/2013 a las 14:18