Мне нужно разместить маркер в фиксированном месте пикселя в 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 пикселей. Есть идеи?
Спасибо!