API Карт Google v3: пользовательские стили для infowindow
Я пробовал многие примеры из ссылки на карты google и из других вопросов stackoverflow, но мне не удалось получить пользовательские стили в моем infowindow.
Я использую что-то очень похожее на то, что было сделано qaru.site/info/14086/...
Здесь он работает/редактируется: http://jsfiddle.net/3VMPL/
В частности, я хотел бы иметь квадратные углы вместо округленных.
Ответы
Ответ 1
Обновить: см. этот ответ для состояния миграции исходного кода инфобокса в github.
Как использовать плагин Infobox, а не использовать обычный Infowindow? Я привел полный пример в пример jsfiddle здесь. Главное в инфобоксах состоит в том, что вы можете создавать свои инфобокс в своей странице html, давая вам полный контроль над тем, как это выглядит, используя css (и некоторые параметры javascript, если необходимо). Здесь html для инфобокса:
<div class="infobox-wrapper">
<div id="infobox1">
Infobox is very easy to customize because, well, it your code
</div>
</div>
Идея здесь "infobox-wrapper"
div будет скрыта (т.е. display: none в вашем css), а затем в вашем javascript вы инициализируете объект Infobox и даете ему ссылку на ваш "инфобокс" (внутри скрытого обертка) следующим образом:
infobox = new InfoBox({
content: document.getElementById("infobox1"),
disableAutoPan: false,
maxWidth: 150,
pixelOffset: new google.maps.Size(-140, 0),
zIndex: null,
boxStyle: {
background: "url('http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/examples/tipbox.gif') no-repeat",
opacity: 0.75,
width: "280px"
},
closeBoxMargin: "12px 4px 2px 2px",
closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
infoBoxClearance: new google.maps.Size(1, 1)
});
Это всего лишь пример некоторых доступных параметров. Единственный необходимый ключ - content
- ссылка на инфобокс.
И чтобы открыть информационное окно:
google.maps.event.addListener(marker, 'click', function() {
infobox.open(map, this);
map.panTo(loc);
});
И для дальнейшего демонстрации гибкости InfoBox этот jsfiddle имеет изображение с переходом css как "информационное окно".
И один последний совет: Не используйте класс "инфобокс" в вашем html. Он, к сожалению, используется плагином, когда инфобокс действительно сгенерирован.
Ответ 2
Если вы не можете использовать инфобокс и вам нужно настроить infowindow, вы можете получить к нему доступ с помощью css.
Это не очень, в значительной степени зависит от первых: дочерних/дочерних селекторов psuedo и, очевидно, от того, решает ли Google когда-либо менять свою структуру html-карты.
Надеюсь, что ниже css может помочь кому-то другому в привязке, когда они вынуждены иметь дело с infowindow.
/* white background and box outline */
.gm-style > div:first-child > div + div > div:last-child > div > div:first-child > div
{
/* we have to use !important because we are overwritng inline styles */
background-color: transparent !important;
box-shadow: none !important;
width: auto !important;
height: auto !important;
}
/* arrow colour */
.gm-style > div:first-child > div + div > div:last-child > div > div:first-child > div > div > div
{
background-color: #003366 !important;
}
/* close button */
.gm-style > div:first-child > div + div > div:last-child > div > div:last-child
{
margin-right: 5px;
margin-top: 5px;
}
/* image icon inside close button */
.gm-style > div:first-child > div + div > div:last-child > div > div:last-child > img
{
display: none;
}
/* positioning of infowindow */
.gm-style-iw
{
top: 22px !important;
left: 22px !important;
}
Ответ 3
Вы можете создать стиль infoWindow, создав класс .gm-style-iw
.
#map-canvas {
.gm-style {
> div:first-child > div + div > div:last-child > div > div {
&:first-child > div,
&:first-child > div > div > div,
&:last-child,
&:last-child > img {
display: none !important;
}
}
.gm-style-iw {
top: 20px !important;
left: 130px !important;
background: #fff;
padding: 10px;
height: 40px;
}
}
}
Ответ 4
Я хотел иметь всплывающее окно прозрачной формы контакта на клике маркера google. Я сделал это, наконец, с помощью плагина infobox и этот пост. То, что я сделал.
Любой может скачать и использовать источник из здесь