2014-09-15 5 views
1

У меня возникли проблемы с реализацией пользовательского инфобокса на рельсах с использованием карты Google Maps 4 Rails. Я добавил плагин infobox в начало страницы и попробовал фрагмент кода в документах, но по-прежнему не создал пользовательских инфобокс или класс «желтый» в окне инфобокса.Gmaps4Rails - custom infowindow не работает

Как передать параметры настраиваемого инфобокса для создаваемых маркеров следующим образом?

:javascript 
handler = Gmaps.build('Google'); 
handler.buildMap({ provider: { 
    }, internal: {id: 'map'}}, function(){ 
    markers = handler.addMarkers(#{raw @hash.to_json},{builders: {Marker: InfoBoxBuilder}}); 
    handler.bounds.extendWith(markers); 
    handler.fitMapToBounds(); 
    handler.getMap().setZoom(9); 
    });  

Я также добавил следующий код infowindow.js.coffee

class InfoBoxBuilder extends Gmaps.Google.Builders.Marker # inherit from base builder 

# override method 
create_infowindow: -> 
    return null unless _.isString @args.infowindow 
    boxText = document.createElement("div") 
    boxText.setAttribute("class", 'yellow') #to customize 
    boxText.innerHTML = @args.infowindow 
    @infowindow = new InfoBox(@infobox(boxText)) 

infobox: (boxText)-> 
    content: boxText 
    pixelOffset: new google.maps.Size(-140, 0) 
    boxStyle: 
    width: "280px" 

handler = Gmaps.build 'Google', { builders: { Marker: InfoBoxBuilder} } 

Любая помощь будет высоко ценится. Спасибо.

ответ

3

вы неправильно поняли документ, заменить:

:javascript 
handler = Gmaps.build('Google'); 
handler.buildMap({ provider: { 
    }, internal: {id: 'map'}}, function(){ 
    markers = handler.addMarkers(#{raw @hash.to_json},{builders: {Marker: InfoBoxBuilder}}); 
    handler.bounds.extendWith(markers); 
    handler.fitMapToBounds(); 
    handler.getMap().setZoom(9); 
    }); 

с:

:javascript 
    var handler = Gmaps.build('Google', { builders: { Marker: InfoBoxBuilder} }); 
    handler.buildMap({ internal: {id: 'map'}}, function(){ 
    var markers = handler.addMarkers(#{raw @hash.to_json}); 
    handler.bounds.extendWith(markers); 
    handler.fitMapToBounds(); 
    handler.getMap().setZoom(9); 
    }); 

И class InfoBoxBuilder должны быть class @InfoBoxBuilder быть доступен на window объекта

В основном в документ драгоценного камня создания карты определяется в том же файле, что и класс InfoBoxBuilder. Вы не делаете этого: вы создаете обработчик в своем окне.

+0

Это работает! Большое вам спасибо за то, что вы apneadiving - вы потрясающий. – user3717009

Смежные вопросы