J'ai essayé de styliser mon Google Maps InfoWindow
, mais la documentation est très limitée sur ce sujet. Comment coiffez-vous un InfoWindow
?
la source
J'ai essayé de styliser mon Google Maps InfoWindow
, mais la documentation est très limitée sur ce sujet. Comment coiffez-vous un InfoWindow
?
Google a écrit un code pour vous aider. Voici quelques exemples: Exemple d'utilisation d'InfoBubble , de marqueurs stylisés et de fenêtre d'informations personnalisée (avec OverlayView).
Le code dans les liens ci-dessus emprunte des itinéraires différents pour obtenir des résultats similaires. L'essentiel est qu'il n'est pas facile de styliser InfoWindows directement, et il peut être plus facile d'utiliser la classe InfoBubble supplémentaire au lieu d'InfoWindow, ou de remplacer GOverlay. Une autre option serait de modifier les éléments de l'InfoWindow en utilisant javascript (ou jQuery), comme suggéré plus tard par ATOzTOA.
Le plus simple de ces exemples est probablement l'utilisation d'InfoBubble au lieu d'InfoWindow. InfoBubble est disponible en important ce fichier (que vous devez héberger vous-même):http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/src/infobubble.js
Page de projet Github d'InfoBubble .
InfoBubble est très stylable, par rapport à 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();
Vous pouvez également l'appeler avec une carte et un marqueur donnés pour l'ouvrir:
infoBubble.open(map, marker);
Comme autre exemple, l'exemple de fenêtre d'information personnalisée étend la classe GOverlay de l'API Google Maps et l'utilise comme base pour créer une fenêtre d'informations plus flexible. Il crée d'abord la classe:
/* 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_);
}
après quoi il procède au remplacement de GOverlay:
InfoBox.prototype = new google.maps.OverlayView();
Vous devez alors remplacer les méthodes dont vous avez besoin: createElement
, draw
, remove
et panMap
. Cela devient plutôt compliqué, mais en théorie, vous dessinez vous-même un div sur la carte maintenant, au lieu d'utiliser une fenêtre d'informations normale.
Vous pouvez modifier toute l'InfoWindow en utilisant jquery seul ...
Ici, l'élément <p> agira comme un crochet dans la véritable InfoWindow. Une fois que le domready se déclenche, l'élément deviendra actif et accessible en utilisant javascript / jquery, comme
$('#hook').parent().parent().parent().parent()
.Le code ci-dessous définit simplement une bordure de 2 pixels autour de l'InfoWindow.
Vous pouvez faire quelque chose comme définir une nouvelle classe CSS ou simplement ajouter un nouvel élément.
Jouez avec les éléments pour obtenir ce dont vous avez besoin ...
la source
// CSS mis dans la feuille de style
la source
J'ai utilisé le code suivant pour appliquer du CSS externe:
la source
Utilisez le plug- in InfoBox de la bibliothèque de l'utilitaire Google Maps. Cela facilite grandement le style / la gestion des fenêtres contextuelles de la carte.
Notez que vous devrez vous assurer qu'il se charge après l'API google maps:
la source
J'ai conçu une infowindow google map avec une image et du contenu comme ci-dessous.
la source
Vous pouvez également utiliser une classe css.
Bonne journée!
la source