добавление jscrollpane в информационное окно Google Maps - PullRequest
0 голосов
/ 31 марта 2011

так что это в основном все в названии ... Я использую jscrollpane в другом месте на странице, поэтому я знаю, что это работает, но я не могу получить ничего, кроме полос прокрутки по умолчанию в информационном окне карт Google.некоторый код:

PanelList = function(speed, target) {  // jscrollpane is working on
    this.speed = speed || 300;         // these panels next to the google map
    this.target = target || '#panel-target';
    this.array = [];
    $('.scrollpane').jScrollPane({autoReinitialise: true});
    this.scrollAPI = $(this.target).data('jsp');
}

// ... lots of code left out for brevity

MarkerList = function(map) {
    this.map = map;
    this.array = [];
    this.infoWindow = new google.maps.InfoWindow();
    this.savedBounds = new google.maps.LatLngBounds();
    var cachedThis = this;
    google.maps.event.addListener(map, 'click', function() {
        cachedThis.infoWindow.close();
    });
}

MarkerList.prototype = {
    makeInfoWindow: function(map, marker) {
        this.infoWindow.setContent('<div class="infowindow scrollpane">'
                                   +'<h2>'+marker.title+'</h2>'
                                   +marker.content
                                   +'</div>');
        this.infoWindow.open(map, marker);
        // assume I should add some jscrollpane code here 
        // but nothing seems to work
    },

Похоже, проблема в том, что, возможно, а) jscrollpane инициализируется до создания информационного окна, б) я нацеливаюсь на дочерний элемент информационного окна, когда мне нужно нацелиться на что-то более высокое,или c) API gmaps просто плохо работает с jscrollpane, и я ничего не могу поделать.Но я действительно понятия не имею.

1 Ответ

0 голосов
/ 31 марта 2011

Aha!Код ниже работает:

   makeInfoWindow: function(map, marker) {
        this.infoWindow.setContent('<div class="infowindow">'
                                   +'<h2>'+marker.title+'</h2>'
                                   +marker.content
                                   +'</div>');
        this.infoWindow.open(map, marker);
        google.maps.event.addListener(this.infoWindow, 'domready', function() {
          $('.infowindow').parent().parent().jScrollPane({autoReinitialise: true});
        });
    },
...