Я пытался стилизовать свои Карты Google InfoWindow
, но документация по этой теме очень ограничена. Как вы оформляете InfoWindow
?
источник
Я пытался стилизовать свои Карты Google InfoWindow
, но документация по этой теме очень ограничена. Как вы оформляете InfoWindow
?
Google написал код, чтобы помочь с этим. Вот несколько примеров: Пример использования InfoBubble , Стилизованных маркеров и Пользовательского информационного окна (с использованием OverlayView).
Код в приведенных выше ссылках использует разные маршруты для достижения аналогичных результатов. Суть в том, что напрямую стилизовать InfoWindows непросто, и может быть проще использовать дополнительный класс InfoBubble вместо InfoWindow или переопределить GOverlay. Другой вариант - изменить элементы InfoWindow с помощью javascript (или jQuery), как было предложено позже ATOzTOA.
Возможно, самый простой из этих примеров - использование InfoBubble вместо InfoWindow. InfoBubble доступен после импорта этого файла (который вы должны разместить самостоятельно):http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/src/infobubble.js
Страница проекта InfoBubble на Github .
InfoBubble очень стильный по сравнению с InfoWindow:
infoBubble = new InfoBubble({
map: map,
content: '<div class="mylabel">The label</div>',
position: new google.maps.LatLng(-32.0, 149.0),
shadowStyle: 1,
padding: 0,
backgroundColor: 'rgb(57,57,57)',
borderRadius: 5,
arrowSize: 10,
borderWidth: 1,
borderColor: '#2c2c2c',
disableAutoPan: true,
hideCloseButton: true,
arrowPosition: 30,
backgroundClassName: 'transparent',
arrowStyle: 2
});
infoBubble.open();
Вы также можете вызвать его с заданной картой и маркером для открытия:
infoBubble.open(map, marker);
В качестве другого примера, пример пользовательского информационного окна расширяет класс GOverlay из Google Maps API и использует его в качестве основы для создания более гибкого информационного окна. Сначала он создает класс:
/* An InfoBox is like an info window, but it displays
* under the marker, opens quicker, and has flexible styling.
* @param {GLatLng} latlng Point to place bar at
* @param {Map} map The map on which to display this InfoBox.
* @param {Object} opts Passes configuration options - content,
* offsetVertical, offsetHorizontal, className, height, width
*/
function InfoBox(opts) {
google.maps.OverlayView.call(this);
this.latlng_ = opts.latlng;
this.map_ = opts.map;
this.offsetVertical_ = -195;
this.offsetHorizontal_ = 0;
this.height_ = 165;
this.width_ = 266;
var me = this;
this.boundsChangedListener_ =
google.maps.event.addListener(this.map_, "bounds_changed", function() {
return me.panMap.apply(me);
});
// Once the properties of this OverlayView are initialized, set its map so
// that we can display it. This will trigger calls to panes_changed and
// draw.
this.setMap(this.map_);
}
после чего переходит к переопределению GOverlay:
InfoBox.prototype = new google.maps.OverlayView();
Затем вы должны переопределить методы, нужно: createElement
, draw
, remove
и panMap
. Это довольно сложно, но теоретически вы сейчас просто рисуете div на карте вместо использования обычного информационного окна.
Вы можете изменить все InfoWindow, используя только jquery ...
Здесь элемент <p> будет действовать как перехватчик фактического InfoWindow. После срабатывания domready элемент станет активным и доступным с помощью javascript / jquery, например
$('#hook').parent().parent().parent().parent()
.Приведенный ниже код просто устанавливает 2-пиксельную границу вокруг InfoWindow.
Вы можете сделать что угодно, например, установить новый класс CSS или просто добавить новый элемент.
Поиграйте с элементами, чтобы получить то, что вам нужно ...
источник
// CSS помещается в таблицу стилей
источник
Я использовал следующий код для применения внешнего CSS:
источник
Используйте плагин InfoBox из библиотеки утилит Google Maps. Это значительно упрощает стилизацию / управление всплывающими окнами карты.
Обратите внимание, что вам нужно убедиться, что он загружается после API карт Google:
источник
У меня есть дизайн окна карты Google с изображением и некоторым контентом, как показано ниже.
источник
Вы также можете использовать класс css.
Добрый день!
источник