2009-07-29 2 views
2

Я пытаюсь направить обзоры ресторанов моего друга на карту (см. Прототип в http://eatrichly.heroku.com/). Идея состоит в том, что когда вы нажимаете маркер, вы должны увидеть обзор ресторана. К сожалению, всплывающее окно, которое появляется, когда вы нажимаете маркер, иногда не достаточно высок, чтобы соответствовать соответствующему обзору. Например:Как сделать накладки Google Maps более высокими (в Rails)

alt text http://img259.imageshack.us/img259/3396/picture4mfy.png

Вот мой код:

В контроллере:

def index 
    @reviews = Review.all 
    @map = GMap.new('map') 
    @map.control_init(:large_map => true, :map_type => false) 
    @map.center_zoom_init([Address.first.lat,Address.first.lng], 13) 

    Restaurant.all.each do |r| 
     body = %{ 
     <b><a target="_BLANK" href="#{r.menu_link}">#{r.name}</a></b> (#{r.cuisines.first}) 
     <br><br> 
     #{r.review.body} 
     } 

     marker = GMarker.new([r.addresses.first.lat, r.addresses.first.lng], 
     :title => r.name, 
     :info_window => body.strip) 
     @map.overlay_init(marker) 
    end 

По мнению:

<%= GMap.header %> 
<%= @map.to_html %> 
<%= @map.div(:width => 1024, :height => 1000) %> 

Как я могу сделать информацию окна соответствуют тексту, который они контактируют в?

+0

Я заметил, что у вас все еще есть эта проблема на вашей странице. Попробуйте мой ответ - это работает гарантировано - или ваши деньги обратно! –

+0

Это была напряженная неделя, но я собираюсь попробовать свой ответ, как только у меня будет свободное время (у меня тоже есть настоящая работа!) –

ответ

3

Это довольно распространенная проблема, с которой сталкиваются разработчики Google Maps. Ответы на следующий вопрос охватывает различные решения:

How to set Google map's marker's infowindow max height?

Резюмируя:

  • Вы должны установить атрибут высоты на изображениях (не применимо в данном случае).
  • Вы должны убедиться, что ваши InfoWindow HTML элементы не наследуя все стили CSS из документа, которые изменяют их высоту (Inherited CSS problem)
2

+1 к предложениям канонады в. Однако, посмотрев на ваш код и заметив, что проблема осталась после удаления всех стилей, я нашел проблему в другом месте:

Вам нужно установить maxWidth на ваши информационные окна. Прямо сейчас GInfoWindowOptions пуст: {}. Попробуйте изменить его на: {maxWidth:400}.

Вот что, я думаю, происходит: поскольку у вас нет максимальной ширины, Google Maps решает, что окно не должно быть очень высоким, так как ваш контент будет просто идти горизонтально. Однако на практике информационное окно действительно имеет максимальную ширину, но оно не учитывается при первоначальном вычислении, поэтому ваш текст заканчивается переполнением.

+0

Спасибо Крису, это то, о чем я не знал. Я добавлю его в свой контрольный список вещей, чтобы посмотреть, когда мои информационные окна не работают;). – RedBlueThing

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