Necesito colocar un marcador en una ubicación de píxel fija dentro del div del mapa. Para instanciar un marcador, necesita un LatLng. Entiendo que fromDivPixelToLatLng() es la forma de convertir las coordenadas de píxeles a LatLng, pero no puedo lograr que se comporte de manera coherente.Google Maps API V3 fromDivPixelToLatLng no es coherente
He publicado un ejemplo simple de mi problema en http://www.pinksy.co.uk/newsquare/overlaytest.html. Haga clic en el mapa para colocar un marcador a 200px/200px. Arrastra el mapa y vuelve a hacer clic. Esperaba que un marcador se colocara a 200px/200px cada vez, pero este no es el caso.
Primero estableció el mapa como de costumbre, en un 600px por 300px div:
var london = new google.maps.LatLng(51.501904,-0.130463);
var mapOptions = {
zoom: 15,
center: london,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
Luego de crear una plantilla:
var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
Para probar fromDivPixelToLatLng(), se crea un clic evento en el mapa, que intenta colocar un marcador en la ubicación de píxel 200px/200px. Independientemente de donde se arrastra el mapa, esperaba que el marcador siempre se pondrán a 200px/200px:
google.maps.event.addListener(map, 'click', function(event) {
var pixelLatLng = overlay.getProjection().fromDivPixelToLatLng(new google.maps.Point(200,200));
var marker = new google.maps.Marker({
position: pixelLatLng,
map: map
});
});
Sin embargo, arrastre el mapa alrededor, y se verá que el marcador no se coloca siempre a 200 píxeles/200px. ¿Algunas ideas?
Gracias!
hay una buena explicación en: https://groups.google.com/forum/#!topic/google-maps-api/L2UJJp10VRw – kaskader