Próbowałem zmienić styl moich Map Google InfoWindow
, ale dokumentacja na ten temat jest bardzo ograniczona. Jak stylizujesz InfoWindow
?
źródło
Próbowałem zmienić styl moich Map Google InfoWindow
, ale dokumentacja na ten temat jest bardzo ograniczona. Jak stylizujesz InfoWindow
?
Google napisał kod, który ma w tym pomóc. Oto kilka przykładów: Przykład użycia InfoBubble , Stylowanych markerów i Niestandardowego okna informacyjnego (przy użyciu OverlayView).
Kod w powyższych linkach ma różne ścieżki, aby osiągnąć podobne wyniki. Istota tego polega na tym, że nie jest łatwo nadać styl InfoWindows bezpośrednio i może być łatwiej użyć dodatkowej klasy InfoBubble zamiast InfoWindow lub zastąpić GOverlay. Inną opcją byłaby modyfikacja elementów InfoWindow za pomocą javascript (lub jQuery), jak sugerował później ATOzTOA.
Prawdopodobnie najprostszym z tych przykładów jest użycie InfoBubble zamiast InfoWindow. InfoBubble jest dostępne po zaimportowaniu tego pliku (który powinieneś sam hostować):http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/src/infobubble.js
Strona projektu InfoBubble na Githubie .
InfoBubble jest bardzo stylowy w porównaniu do 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();
Możesz również wywołać go z podaną mapą i znacznikiem, aby otworzyć:
infoBubble.open(map, marker);
Innym przykładem jest przykład niestandardowego okna informacyjnego, który rozszerza klasę GOverlay z interfejsu API Map Google i wykorzystuje to jako podstawę do tworzenia bardziej elastycznego okna informacyjnego. Najpierw tworzy klasę:
/* 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_);
}
po czym przechodzi do nadpisywania GOverlay:
InfoBox.prototype = new google.maps.OverlayView();
Następnie należy zastąpić metody musisz: createElement
, draw
, remove
i panMap
. Jest to dość skomplikowane, ale teoretycznie sam rysujesz teraz div na mapie, zamiast używać normalnego okna informacyjnego.
Możesz zmodyfikować całe okno InfoWindow, używając samego jquery ...
Tutaj element <p> będzie działał jako punkt zaczepienia do właściwego okna InfoWindow. Gdy domready odpali, element stanie się aktywny i dostępny za pomocą javascript / jquery, na przykład
$('#hook').parent().parent().parent().parent()
.Poniższy kod ustawia tylko 2-pikselowe obramowanie wokół okna InfoWindow.
Możesz zrobić wszystko, na przykład ustawić nową klasę CSS lub po prostu dodać nowy element.
Baw się elementami, aby uzyskać to, czego potrzebujesz ...
źródło
// CSS umieszczony w arkuszu stylów
źródło
Użyłem poniższego kodu, aby zastosować zewnętrzny CSS:
źródło
Użyj wtyczki InfoBox z biblioteki programu Google Maps Utility. Znacznie ułatwia stylizowanie / zarządzanie wyskakującymi okienkami mapy.
Pamiętaj, że musisz się upewnić, że ładuje się po interfejsie Google Maps API:
źródło
Mam projekt mapy google infowindow z obrazem i niektórymi treściami, jak poniżej.
źródło
Możesz też użyć klasy css.
Dobry dzień!
źródło