Tenho tentado estilizar meu Google Maps InfoWindow
, mas a documentação é muito limitada neste tópico. Como você estiliza um InfoWindow
?
fonte
Tenho tentado estilizar meu Google Maps InfoWindow
, mas a documentação é muito limitada neste tópico. Como você estiliza um InfoWindow
?
O Google escreveu algum código para ajudar nisso. Aqui estão alguns exemplos: Exemplo usando InfoBubble , marcadores estilizados e janela de informações personalizadas (usando OverlayView).
O código nos links acima segue caminhos diferentes para obter resultados semelhantes. A essência disso é que não é fácil estilizar InfoWindows diretamente e pode ser mais fácil usar a classe InfoBubble adicional em vez de InfoWindow ou substituir GOverlay. Outra opção seria modificar os elementos da InfoWindow usando javascript (ou jQuery), como sugerido posteriormente pelo ATOzTOA.
Possivelmente, o mais simples desses exemplos é usar InfoBubble em vez de InfoWindow. InfoBubble está disponível importando este arquivo (que você deve hospedar):http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/src/infobubble.js
Página do projeto Github do InfoBubble .
InfoBubble é muito estilizado, em comparação com 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();
Você também pode chamá-lo com um determinado mapa e marcador para abrir em:
infoBubble.open(map, marker);
Como outro exemplo, o exemplo da janela de informações personalizada estende a classe GOverlay da API do Google Maps e a usa como base para criar uma janela de informações mais flexível. Primeiro, ele cria a 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_);
}
depois disso, ele substitui GOverlay:
InfoBox.prototype = new google.maps.OverlayView();
Você deve, então, substituir os métodos que você precisa: createElement
, draw
, remove
e panMap
. Fica bastante complicado, mas em teoria você está apenas desenhando um div no mapa agora, em vez de usar uma janela de informações normal.
Você pode modificar toda a InfoWindow usando apenas jquery ...
Aqui, o elemento <p> atuará como um gancho para a InfoWindow real. Assim que o domready for acionado, o elemento se tornará ativo e acessível usando javascript / jquery, como
$('#hook').parent().parent().parent().parent()
.O código abaixo apenas define uma borda de 2 pixels ao redor da InfoWindow.
Você pode fazer qualquer coisa, como definir uma nova classe CSS ou apenas adicionar um novo elemento.
Brinque com os elementos para obter o que você precisa ...
fonte
// CSS colocado na folha de estilo
fonte
Usei o seguinte código para aplicar algum CSS externo:
fonte
Utilizar a Caixa de Informações plug-in da Biblioteca de utilitários do Google Maps. Ele torna muito mais fácil estilizar / gerenciar pop-ups de mapas.
Observe que você precisa se certificar de que ele carrega após a API do Google Maps:
fonte
Eu projetei o google map infowindow com imagem e algum conteúdo conforme abaixo.
fonte
Você também pode usar uma classe css.
Dia bom!
fonte