Выровнять информационный блок по маркеру в Google Maps

Я использую плагин InfoBox, и у меня есть следующий код:

Gmaps.map.infobox = function(boxText) {
  return {
     content: boxText
    ,disableAutoPan: false
    ,maxWidth: 0
    ,pixelOffset: new google.maps.Size(-140, 0)
    ,zIndex: null
    ,boxStyle: {
      background: "url('http://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.5/examples/tipbox.gif') no-repeat"
      ,opacity: 0.75
      ,width: "280px"
       }
    ,closeBoxMargin: "10px 2px 2px 2px"
    ,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
    ,infoBoxClearance: new google.maps.Size(1, 1)
    ,isHidden: false
    ,pane: "floatPane"
    ,enableEventPropagation: false
 }};

С маркером размером 77x80 пикселей, когда отображается InfoWindow, оно правильно выравнивается по нижней части маркера, как вы можете видеть здесь:

Большой маркер с хорошо выровненным информационным полем

Однако, если я изменю размер маркера на 35x44 пикселей, InfoWindow не будет точно выровнен по нижней части маркера, как вы можете видеть здесь:

Маленький маркер с неправильным выравниванием информационного поля

Любые мысли о том, как я могу сделать его полностью выровненным внизу?

РЕДАКТИРОВАТЬ: Для небольших маркеров я создал их, установив это в библиотеке, которую я использую (gmaps4rails):

marker.picture({
                  :picture => "assets/juice-pin-small.png",
                  :width => 35,
                  :height => 44,
                 })

Для больших маркеров я создаю их, устанавливая это:

marker.picture({
                      :picture => "assets/juice-pin-small.png",
                      :width => 70,
                      :height => 88,
                      :marker_anchor => [23,78]
                     })

person Hommer Smith    schedule 07.05.2012    source источник
comment
Не могли бы вы также добавить полные определения обоих маркеров, а не просто указать размер? А как вы добавляете инфобокс на карту?   -  person Andrew Leach    schedule 07.05.2012
comment
Что вы подразумеваете под полным определением? Я отредактировал то, что я установил в библиотеке ... Я добавил информационное окно, добавив то, что я сказал в вопросе, между тегами ‹script› после того, как карта была сгенерирована библиотекой.   -  person Hommer Smith    schedule 07.05.2012
comment
Потому что, если информационный блок прикреплен к маркеру чем-то вроде infobox.open(map, marker);, это зависит от определения маркера. И это тоже может быть не в том месте, если его якорь неверен.   -  person Andrew Leach    schedule 07.05.2012


Ответы (1)


То, что я знаю, определенно не лучшее решение, потому что вам нужно два набора опций, если вы будете использовать маркеры обоих размеров.

В любом случае, расположение информационного поля можно изменить с помощью pixelOffset: new google.maps.Size(-140, 0);, в вашем случае, чтобы переместить поле влево, сделайте первое число более отрицательным (например, -145).

Мысль о другом: отредактировать сам маркер и сдвинуть его на несколько пикселей.

person Tina CG Hoehr    schedule 07.05.2012