- ×
Customizable info windows using the Google Maps JavaScript API.
Filed under user interfaceShow AllSnazzy Info Window
Snazzy Info Window is a plugin for customizable info windows using the Google Maps JavaScript API. Open sourced by the people that created Snazzy Maps.
Features
- Responsive sizing
- The info window will size properly for a variety of screen and map sizes.
- Custom styling
- Customize the border radius, shadow, background color, border, and much more.
- Supports SCSS styling.
- Dynamic content
- Supports dynamic content after initialization with proper resizing.
- Multiple placements
- Place the info window to the top, bottom, right, or left of the marker.
Examples
- Simple
- Multiple markers
- Dynamic content
- Set position
- Styling with SCSS
- Styling with JavaScript
- Complex styling
Installation
You can install Snazzy Info Window from the following package managers:
yarn add snazzy-info-window
npm install --save snazzy-info-window
bower install --save snazzy-info-window
Quick Start
Include all the required files.
<link rel="stylesheet" href="snazzy-info-window.min.css"> <script src="https://maps.googleapis.com/maps/api/js?key={{YOUR KEY HERE}}"></script> <script src="snazzy-info-window.min.js"></script>
Create a new
SnazzyInfoWindow
object with a marker.var infoWindow = new SnazzyInfoWindow({ marker: marker, content: 'Snazzy!' });
Public Methods
open()
Will attempt to open the info window.
close()
Will attempt to close the info window.
isOpen()
Determines if the info window is open.
destroy()
Will destroy the info window. If the info window is open it will be forced closed bypassing the regular
beforeClose
callback. All Google Map event listeners associated to this info window will be removed.setContent(content)
Set the content in the info window. This can be called at any time.
- Parameter:
content
- string or DOM Element
setPosition(latLng)
Set the
position
of the info window. A valid Google Map instance must be associated to the info window. This could be either through themarker
ormap
option.- Parameter:
latLng
setWrapperClass(wrapperClass)
Set the
wrapperClass
of the info window. This can be called at any time.- Parameter:
wrapperClass
- string
getWrapper()
Will return the DOM Element for the wrapper container of the info window.
Options
marker
The Google Maps marker associated to this info window.
- Type: Marker
content
The text or DOM Element to insert into the info window body.
- Type: string or DOM Element
placement
Choose where you want the info window to be displayed, relative to the marker.
- Type: string
- Default:
'top'
- Possible Values:
'top'
,'bottom'
,'left'
,'right'
map
The Google Map associated to this info window. Only required if you are not using a
marker
.- Type: Map
position
The latitude and longitude where the info window is anchored. The
offset
will default to0px
when using this option. Only required if you are not using amarker
.- Type: LatLng or LatLngLiteral
wrapperClass
An optional CSS class to assign to the wrapper container of the info window. Can be used for applying custom CSS to the info window.
- Type: string
maxWidth
The max width in pixels of the info window.
- Type: numeric
- Example:
200
maxHeight
The max height in pixels of the info window.
- Type: numeric
- Example:
200
offset
The offset from the marker. This value should be different for each
placement
. By default the offset is configured for the default Google Maps marker.- Type: object
Example:
offset: { top: '10px', left: '20px' }
edgeOffset
The offset from the map edge in pixels which is used when panning an info window into view.
- Type: object
Example:
edgeOffset: { top: 20, right: 20, bottom: 20, left: 20 }
backgroundColor
The color to use for the background of the info window.
- Type: string
- Possible Values: Any valid CSS color value.
- Examples:
'#FF0000'
,'blue'
padding
A custom padding size around the content of the info window.
- Type: string
- Possible Values: Any valid CSS size value.
- Examples:
'10px'
,'2em'
,'5%'
border
A custom border around the info window. Set to
false
to completely remove the border. The units used forborder
should be the same aspointer
.- Type: object or boolean
Example:
border: { width: '10px', color: '#FF0000' }
borderRadius
A custom CSS border radius property to specify the rounded corners of the info window.
- Type: string
- Example:
'2px 20px'
fontColor
The font color to use for the content inside the body of the info window.
- Type: string
- Possible Values: Any valid CSS color value.
- Examples:
'#FF0000'
,'blue'
fontSize
The font size to use for the content inside the body of the info window.
- Type: string
- Possible Values: Any valid CSS font size value.
pointer
The height of the pointer from the info window to the marker. Set to
false
to completely remove the pointer. The units used forpointer
should be the same asborder
.- Type: string or boolean
- Possible Values: Any valid CSS size value.
- Example:
'10px'
shadow
The CSS properties for the shadow of the info window. Set to
false
to completely remove the shadow.- Type: object or boolean
Default:
shadow: { h: '0px', v: '3px', blur: '6px', spread: '0px', opacity: 0.5, color: '#000' }
openOnMarkerClick
Determines if the info window will open when the marker is clicked. An internal listener is added to the Google Maps
click
event which calls theopen()
method.- Type: boolean
- Default:
true
closeOnMapClick
Determines if the info window will close when the map is clicked. An internal listener is added to the Google Maps
click
event which calls theclose()
method. This will not activate on the Google Mapsdrag
event when the user is panning the map.- Type: boolean
- Default:
true
closeWhenOthersOpen
Determines if the info window will close when any other Snazzy Info Window is opened.
- Type: boolean
- Default:
false
showCloseButton
Determines if the info window will show a close button.
- Type: boolean
- Default:
true
closeButtonMarkup
The text or DOM Element to replace the default close button. No click handler or positioning is added to your markup if you use this option.
- Type: string or DOM Element
panOnOpen
Determines if the info window will be panned into view when opened.
- Type: boolean
- Default:
true
callbacks
All callbacks are optional and can access the info window instance via
this
.- Type: object
Example:
callbacks: { beforeOpen: function(){}, open: function(){}, afterOpen: function(){}, beforeClose: function(){}, close: function(){}, afterClose: function(){} }
beforeOpen
Called before the info window attempts to open. Return
false
to cancel the open.- Type: function
Example:
function() { console.log('Cancel opening the info window.'); return false; }
open
Called when the info window is opening. This occurs at the end of the OverlayView
onAdd()
implementation. At this point the info window is added to the DOM but is not drawn yet.- Type: function
Example:
function() { console.log('Info window has started opening.'); }
afterOpen
Called when the info window has opened. This occurs at the end of the OverlayView
draw()
implementation. At this point the info window is added to the DOM and should be visible.- Type: function
Example:
function() { console.log('Info window has opened.'); }
beforeClose
Called before the info window attempts to close. Return
false
to cancel the close.- Type: function
Example:
function() { console.log('Cancel closing the info window.'); return false; }
close
Called when the info window is closing. This occurs at the beginning of the OverlayView
onRemove()
implementation. At this point the info window is still in the DOM.- Type: function
Example:
function() { console.log('Info window has started closing.'); }
afterClose
Called after the info window has closed. This occurs at the end of the OverlayView
onRemove()
implementation. At this point the info window should be removed from the DOM.- Type: function
Example:
function() { console.log('Info window has closed.'); }
HTML Structure
<div class="si-float-wrapper"> <div class="si-wrapper-top"> <div class="si-shadow-wrapper-top"> <div class="si-shadow-frame"></div> <div class="si-shadow-pointer-top"> <div class="si-shadow-inner-pointer-top"></div> </div> </div> <div class="si-content-wrapper"> <button class="si-close-button"></div> <div class="si-content"> <!-- Your content goes here --> </div> </div> <div class="si-pointer-border-top"></div> <div class="si-pointer-bg-top"></div> </div> </div>
si-float-wrapper
Used to absolute position the info window in the Google Maps floatPane.
si-wrapper-
placement
Used to css translate the info window into the
placement
. ThewrapperClass
is added to this element's class list.si-shadow-wrapper-
placement
Used to blend opacity for all shadow elements. This div will not be included if
shadow
isfalse
.si-shadow-frame
Used to create the box shadow for the content wrapper. This element will not be included if
shadow
isfalse
.si-shadow-pointer-
placement
Used to show the pointer shadow in the
placement
. This element will not be included ifshadow
orpointer
isfalse
.si-shadow-inner-pointer-
placement
Used to create the shadow for the pointer. This element will not be included if
shadow
orpointer
isfalse
.si-content-wrapper
Used for adding padding and border around the content.
si-close-button
Used for showing the default close button in the top right hand corner. This element will not be included if
showCloseButton
isfalse
.si-content
Used for wrapping your content and showing a scroll bar when there is overflow.
si-pointer-border-
placement
Used for rendering the tip of the pointer when there is a border present. This element will not be included if
pointer
orborder
isfalse
.si-pointer-bg-
placement
Used for rendering the inner tip of the pointer when there is a border present. This element will not be included if
pointer
isfalse
.Contributing
If you find a bug with the library, please open an issue. If you would like fix an issue or contribute a feature, follow the steps outlined here.
- Responsive sizing