Google Maps API V3 fromDivPixelToLatLng несовместим

Мне нужно разместить маркер в фиксированном месте пикселя в div карты. Чтобы создать маркер, вам понадобится LatLng. Я понимаю, что fromDivPixelToLatLng () - это способ конвертировать пиксельные координаты в LatLng, но я не могу заставить его вести себя последовательно.

Я разместил простой пример своей проблемы на http://www.pinksy.co.uk/newsquare/overlaytest.html . Щелкните карту, чтобы установить маркер на 200 пикселей / 200 пикселей. Перетащите карту и щелкните еще раз. Я ожидал, что маркер будет каждый раз размещаться на 200 пикселей / 200 пикселей, но это не тот случай.

Сначала я настраивал карту как обычно, в div 600 пикселей на 300 пикселей:

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);

Затем я создаю оверлей:

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);

Чтобы протестировать fromDivPixelToLatLng (), я создаю событие щелчка на карте, которое пытается разместить маркер в пикселях 200 пикселей / 200 пикселей. Независимо от того, куда вы перетаскиваете карту, я ожидал, что маркер всегда будет размещен на 200 пикселей / 200 пикселей:

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
    });
});

Однако, перетащите карту, и вы увидите, что маркер не всегда размещается на 200 пикселей / 200 пикселей. Есть идеи?

Спасибо!

5
задан pinksy 29 October 2011 в 09:38
поделиться