Google Maps API V3: fromContainerPixelToLatLng

В настоящее время я работаю над проектом, который требует, чтобы у меня был div над картой Google. Однако мне нужно передать событие mousemove div на карту. Для этого мне нужно найти координаты LatLng из координат пикселей контейнера карты (поскольку для запуска события Maps mousemove требуются координаты LatLng).

Есть ли другой способ передать событие mousemove из div на карту, и если нет, то как мне перейти от координат контейнера Map к LatLng. Я читал, что для этого требуется создать фиктивный оверлей, а затем использовать getProjection() для получения MapCanvasProjection и, наконец, вызвать fromContainerPixelToLatLng(). Есть ли более простой способ или мне действительно нужно сначала создать фиктивный оверлей?


person Jibran    schedule 05.09.2010    source источник
comment
см. на code.google.com/intl/ vi/apis/карты/документация/javascript/   -  person nguyên    schedule 16.03.2011


Ответы (1)


Насколько я могу судить, это то, как вы должны это сделать. Сначала я тоже сопротивлялся, так как это казалось таким излишеством, но как только я это сделал, все заработало отлично. Вот пример реализации с удобным обратным вызовом delayedInit():

function Dummy(map) {
    this.setMap(map);
}
Dummy.prototype = new google.maps.OverlayView();
Dummy.prototype.draw = function() {
    if (!this.ready) { 
        this.ready = true; 
        google.maps.event.trigger(this, 'ready'); 
    } 
}
Dummy.prototype.onAdd = function(){
    // the Overlay dummy is ready and can be called upon
    delayedInit();
}
var dum;

... и после того, как вы создали свою карту Google:

dum = new Dummy(map);
person T3db0t    schedule 21.10.2010
comment
Спасибо за это. Я оказался на том же месте после экспериментов. Хотя я просто определяю функции draw, onAdd и onRemove и оставляю их пустыми. Работай как шарм! Спасибо. - person Jibran; 02.11.2010