La solución dada no funcionó para mí, porque el div superpuesto crea un punto muerto en el mapa. Una mejor solución para mi proyecto, utilizando Google Maps JavaScript API V3, era crear la retícula en el mapa como un marcador con una forma de rectángulo de 1 píxel. Luego use el evento maps bounds_changed para volver a centrar el marcador.
La imagen del retículo es 63 x 63 png. (Imágenes/reticle.png)
Definir la imagen y forma del marcador ...
var reticleImage = new google.maps.MarkerImage(
'images/reticle.png', // marker image
new google.maps.Size(63, 63), // marker size
new google.maps.Point(0,0), // marker origin
new google.maps.Point(32, 32)); // marker anchor point
var reticleShape = {
coords: [32,32,32,32], // 1px
type: 'rect' // rectangle
};
Después de la creación de nuestro mapa (main_map) añadimos el marcador ...
reticleMarker = new google.maps.Marker({
position: latlng,
map: main_map,
icon: reticleImage,
shape: reticleShape,
optimized: false,
zIndex: 5
});
Aquí var latlng es el mismo objeto LatLng usado para crear main_map. El zIndex debe ser mayor que cualquier otro marcador zIndex, para mantener la retícula en la parte superior.
Luego agregamos un controlador de eventos al que se llamará cuando se active el mapa bounds_changed.
google.maps.event.addListener(main_map, 'bounds_changed', centerReticle);
y finalmente tenemos la función centerReticle().
function centerReticle(){
reticleMarker.setPosition(main_map.getCenter());
}
Dado que no estamos haciendo otra cosa con el evento 'bounds_changed' podemos poner en orden el código pasando una función anónima a la llamada addListener ... Esto nos evita tener que definir la centerReticle() función.
google.maps.event.addListener(main_map, 'bounds_changed',
function(){reticleMarker.setPosition(main_map.getCenter());});
En realidad, funciona bastante resbaladizo. Espero que esto ayude a otros.
Gracias.
Saltar
Fantástico, sí, mi solución creó un punto muerto que es bastante molesto, aunque pequeño. Dame un poco de blanco para probar esto ... –
Hola Drew, me alegra que hayas notado mi respuesta, porque parece ser el truco. Como de costumbre, encontré tu pregunta mientras buscaba la respuesta, pero nunca saqué el div superpuesto de la esquina superior izquierda del mapa antes de darme cuenta de que no iba a estar contento con él. Actualmente estoy trabajando en PithyTwits, una aplicación web de Twitter. Me alejo del término geocodificación porque la gente quiere que todo sea científico. No hago geocodificación, solo estoy recopilando LatLng y poniéndolos en un mapa. Aquí hay un par de tweets con capturas de pantalla. - http://bit.ly/iuo9Ia http://bit.ly/iTOjeb – BentFX
¡Acabo de probar esto y funciona perfectamente, no más puntos muertos! Muchas gracias. Ojalá pudiera votar esto dos veces :) –