Является ли мое пользовательское информационное окно излишне сложным? - PullRequest
0 голосов
/ 25 января 2012

Найден этот метод, позволяющий использовать DIV в качестве пользовательских карт Google InfoWindow.Это работает, но кажется немного хакерским. Есть ли более простой способ?

a) Настройка наложения

MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.draw = function() {}
overlay = new MyOverlay(this.map);

function MyOverlay(map) { this.setMap(map); }

b) Нажмите слушателя на каждый маркер

    google.maps.event.addListener(markers[i], 'click', function() {
        displayInfo(this);
    });

c) отображение функции infoWindow

function displayInfo(marker) {

 var e = $('#infobox');

overlay.getPanes().floatPane.appendChild(e);

//important! Removes already active listeners.
if(displayInfoProcess) {google.maps.event.removeListener(displayInfoProcess);}

displayInfoProcess = google.maps.event.addListener(map, 'bounds_changed', function() {

    show('#infobox');

    var markerOffset = overlay.getProjection().fromLatLngToDivPixel(marker.position);

    e.style.top = markerOffset.y - 115 + 'px';
    e.style.left = markerOffset.x - 57 + 'px';

    e.innerHTML = marker.store + '<br><em>' +marker.distance;

});
map.panTo(marker.position);
}

1 Ответ

0 голосов
/ 26 января 2012

Кажется "хорошо". Вот пример через сайт с кодом Google:

http://gmaps -samples-v3.googlecode.com / SVN / багажник / infowindow_custom / InfoWindow-custom.html

Посмотрите на источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...