почему Google InfoWindow CSS не отображается?настройка слишком сложна - PullRequest
6 голосов
/ 19 августа 2011

Это действительно беспокоит меня - очень много.

После пробежки по google maps v3, сгенерированному на стороне клиента, в firebug, код на стороне клиента, я почти готов ехать по улице и дать некоторым из этих инженеров часть своего ума ... arrrgh: P

Класс infowWindow создает HTML, который, на мой взгляд, просто сумасшедший. Может быть, кто-то может помочь мне разобраться в этом.

Структура HTML InfowWindow выглядит следующим образом:

#map_canvas > div > div > div > div > div // 5 levels of elements, 
no big deal here, ok...
> div // top left corner
div // top right corner
div // bottom left corner
div // bottom right corner

// now comes fun stuff for the speech bubble arrow:

div
div
div
div
div
div
div
div
div
div

// the 10 divs above are stacked diagonally with odd sizes to make this arrow. 
i'm sorry but WHY?!? is it done like that? I suppose they wanted the user to be 
able to grab the map even right next to the arrow. Think about this: do users 
really need to be able to not grab the arrow? if grabbing the arrow causes map pan, 
as is the case for the shadow images, would that really be a problem?

div // bottom middle for image background border or something
div // top middle
div // middle
div // bottom middle, again
div // entire block of the infoWindow, probably the container
> img // close box
div // center block with the contents of the infoWindow
div // text content container

WOW - вот и гайки!

обратите внимание, что нет настоящей семантической структуры, и - черт возьми, я осмелился предположение - нигде нет имен классов, ничего. Я подумал, может быть, у них есть некоторые вид коробки с 9 срезами происходит, а затем производит стрелку отдельно; Я имею в виду, спрайт изображения в iw3.png, конечно, не будет проблемой здесь.

Я искренне надеюсь, что кто-то, кто влияет на этот API, сталкивается с этим и надеюсь, Google в конце концов найдет способ решить это так, что обычай Визуальные элементы infoWindow так же просты, как и маркеры.

Спасибо за настройку! Приятного комментирования.

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


ранее я прокомментировал какой-то другой пост, и я думаю, что не должно быть слишком много, чтобы попросить метод в API, который позволяет вам использовать пользовательский интерфейс, не прибегая к почти дублированию всего объекта окна, как в настоящее время необходимо (см. классы расширений Google v3).

google.maps.infoWindow.setStyle({
  'topleft' : {
    'background' : 'url(images/windowsprite.png) 0 0 no-repeat',
    'width' : '10px',
    'height' : '10px'
  },
  'topRight' : {
     ...etc...
  }
  ...etc...
})

Ответы [ 3 ]

1 голос
/ 21 августа 2011

Вы пробовали InfoBox?

http://googlegeodevelopers.blogspot.com/2010/04/infobox-10-highly-customizable.html

или InfoBubble?

http://google -maps-utility-library-v3.googlecode.com / SVN / багажник / infobubble / примеры / example.html /

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

Отсутствие классов для элементов является (хорошим) дизайнерским решением для API. Это исключает возможность конфликтов с пользовательскими классами.

1 голос
/ 25 августа 2011

После долгих проб и ошибок я решил, что лучший способ решить эту проблему - использовать класс OverlayView и просто создать пользовательский контейнер. Ну, «просто» - это преуменьшение, но это работает. И теперь у меня есть полный контроль над макетом и функциональностью.

0 голосов
/ 19 августа 2011

Вы пробуете стилизацию с помощью CSS? Пример ниже показывает это. Это самый простой способ изменить пользовательский интерфейс.

http://code.google.com/apis/maps/documentation/javascript/overlays.html#InfoWindows

...