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:
La parte ajax es muy sencilla tambien:
Código Javascript
:
Ver originalfunction jsDinamic(direccion,tipo){
var g=document.createElement("script");
g.src=direccion;
g.type=tipo;
document.body.appendChild(g);
}
function mostrarMapas(str)
{
var xmlhttp;
if (str=="")
{
document.getElementById(""cont-map").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
jsDinamic("https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js","text/javascript");
jsDinamic("http://maps.google.com/maps/api/js?sensor=false&language=es","text/javascript");
jsDinamic("http://midireccion/mapasdinamicos.js","text/javascript");
document.getElementById("cont-map").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","mapa.php?ciudad="+str,true);
xmlhttp.send();
}
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$(function() {
//esto no importa que centro tenga porque al final en función de la ciudad cambia el centro, solo sirve para inicializar
var chicago = new google.maps.LatLng(41.924832, -87.697456),
pointToMoveTo,
first = true,
curMarker = new google.maps.Marker({}),
$el;
var options = {
zoom: 16,
center: chicago,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($("#map_canvas")[0], options);
var image = new google.maps.MarkerImage(
'images/sprite.png'//aqui sospecho que es el error pero es una sospecha
);
$("#locations li").mouseenter(function() {
$el = $(this);
if (!$el.hasClass("hover")) {
$("#locations li").removeClass("hover");
$el.addClass("hover");
if (!first) {
// Clear current marker
curMarker.setMap();
// Set zoom back to Chicago level
// map.setZoom(10);
}
// Move (pan) map to new location
pointToMoveTo = new google.maps.LatLng($el.attr("data-geo-lat"), $el.attr("data-geo-long"));
map.panTo(pointToMoveTo);
// Add new marker
curMarker = new google.maps.Marker({
position: pointToMoveTo
, title: $el.attr("data-marcador")
,map: map
,icon: image
});
// On click, zoom map
google.maps.event.addListener(curMarker, 'click', function (e) {
map.setZoom(14);
});
first = false;
}
});
$("#locations li:first").trigger("mouseenter");
});
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.