Infowindows desplazados (no necesita infobox.js)
Se puede desplazar el infowindow standard de Google Maps añadiendo el parámetro pixelOffset durante la inicialización del mapa.
Se puede desplazar el infowindow standard de Google Maps añadiendo el parámetro pixelOffset durante la inicialización del mapa.
map goes here
map_sample_6A = new GMapz.map(
$('#map-sample-6A'), {
center: [36.08, -6.82],
zoom: 5,
pixelOffset: [158, 100] // Offset of infowindow
}
);
map_sample_6A.onReady = function() {
this.addLocations(spain_locs).fitBounds();
};GMapz añade la clase adicional .gm-style-iw-container dentro del mapa, lo que permite personalizaciones del infowindow estandar de Google Maps (por ejemplo en esta demo cambiar la posición de la flecha).
Puedes echar un vistazo a los estilos del infobox de esta demo en: https://github.com/carloscabo/gmapz/blob/master/js/gmapz/gmapz.infobox.scss
Algunos proyectos pueden requerir de infowindows personalizadas (las ventanitas que se abren en el mapa cuando pulsamos sobre un marker). Para esta funcionalidad hace falta incluir la librería infobox.modified.js, y una hoja de estilo que defina el estilo de nuestros infoboxes, para ver el estilo empleado en esta demo puedes echar un ojo a gmapz-sample-infobox.scss ( ver ).
infobox.js de forma sencilla en el assets pipeline (y en la filosofía de funcionamiento de GMapz) ha habido que modificarla (no ha habido otra solución elegante). Si actualizas la librería, deberás aplicar las mismas modificaciones :(content: '...' Este el el código que se insertará en el infobox cuando se crea, cuando el usuario pulse sobre un marcador automáticamente se reemplazará {{__REPLACE__}} por el contenido de la clave: iw: del marker que hayamos definido en el JSON de marcadores / localizaciones.
pixelOffset: Desplazamiento del infobox en pixels desde la posición del pin / marker.
closeBoxURL: '', enableEventPropagation: true estas dos líneas nos permiten desactivar el botón de cerrar que añade infobox automáticamente para crear uno propio nuestro. Nuestro botón de cerrar deberá tener la clase .gmapz-ibx-close, el evento de cerrado se attacheará automáticamente.
infobox.js dispone de algunos ejemplos de las opciones de inicialización en https://htmlpreview.github.io/?https://raw.githubusercontent.com/googlemaps/v3-utility-library/master/infobox/docs/examples.html y la referencias completa con todas las opciones disponibles en http://htmlpreview.github.io/?https://github.com/googlemaps/v3-utility-library/blob/master/infobox/docs/reference.html.map goes here
// Enable infobox.js when google.maps loaded
GMapz.onGoogleMapsReady = function () {
// Enable infobox library
infoBoxLoader(true);
};
// Start map with default options
map_sample_6B = new GMapz.map($('#map-sample-11'));
map_sample_6B.onReady = function() {
// Define custom infobox style
var ib_options = {
content: '<div class="gmapz-ibx"><div class="gmapz-ibx-close"></div><div class="gmapz-ibx-content">{{__REPLACE__}}</div><div>',
pixelOffset: new google.maps.Size(-130, -96), // x, y offset from marker
closeBoxURL: '',
enableEventPropagation: true
};
// Add custom infobox to the map
this.defineInfoBox( ib_options );
// Load Italy cities AFTER define infobox
this.addLocations(italy_cities).fitBounds();
};
map_sample_6B.onDraw = function() {
// Open Rome marker / infobox
this.markers['roma'].click();
};Puedes echar un vistazo a los estilos del infobox de esta demo en: https://github.com/carloscabo/gmapz/blob/master/js/gmapz/gmapz.infobox.scss