Wie ändere ich die Größe des Infofensters, nachdem es geöffnet wurde? Ich habe einen Hyperlink innerhalb des Fensters, der eine AJAX-Anfrage generiert; Beim Callback möchte ich die Größe des Infofensters ändern.Google Maps: Größe der Infobox dynamisch ändern
Antwort
Es ist nicht möglich, die Größe des Infofensters zu animieren, aber es gibt eine reset Funktion. Die Dokumentation besagt, dass Sie einen Parameter auf Null setzen können, aber wenn Sie den Parameter 'size' auf null setzen, erhalten Sie einen Fehler. Das bedeutet, dass Sie die Größe des InfoWindows angeben müssen.
Da jedoch der ursprüngliche Punkt der dynamischen Größenänderung des Fensters, ruiniert, würde ich dringend empfehlen, einfach das ursprüngliche Infofenster zu schließen und ein neues zu erstellen - was ist, was die Reset-Funktion erscheinen wird, irgendwie zu tun.
Überprüfen Sie Folgendes. Was passiert, ist, dass ich ein erstes Info-Fenster mit minimalen Informationen erstellen (siehe getInfoWindowHtml). Der Aufruf gmap.openInfoWindowHtml bietet einen Callback, der nach dem Öffnen des Infowindows aufgerufen wird. Rufen Sie in diesem Rückruf Ihren Ajax-Anruf auf und setzen Sie den Fensterinhalt zurück. Es gibt zwei Probleme aber:
konnte nicht ich das Fenster bekommen, um die Größe genau zu dem zurückgegebenen Inhalt, so dass ich nur verwendete eine Standardgröße (siehe die neue GSize (300, 150) in der anonymen Funktion zurück von markerClickFn)
Wenn sich ein Marker in der Nähe der Extremwerte der Bildgrenzen befindet, werden Teile des Infofensters abgeschnitten. IOW, die Karte stimmt nicht mehr mit dem Infowindow überein. Ich kann das wahrscheinlich beheben, aber es war kein dringendes Problem.
function markerClickFn(venue, latlng) { return function() { var title = venue.Name; var infoHtml = getInfoWindowHtml(venue); // need to zoom in gmap.setZoom(13); gmap.openInfoWindowHtml(latlng, infoHtml, { onOpenFn: function() { var iw = gmap.getInfoWindow(); iw.reset(iw.getPoint(), iw.getTabs(), new GSize(300, 150), null, null); $("#info-" + venue.Id.toString()).load("/Venue/MapInfoWindow/" + venue.Id); } } ); }; } function getSidebarHtml(venue) { var url = "/Venue/Details/" + venue.Id; // actually should bring up infowindow var html = "<li id='venue-" + venue.Id + "'>\n"; html = html + venue.Name + "\n"; //html = html + "<p class='description'>" + trunc(venue.Description, 200) + "</p>\n"; html = html + "</li>"; return html; } function getInfoWindowHtml(venue) { var url = "/Venue/Details/" + venue.Id; // actually should bring up infowindow var html = "<div id='info-" + venue.Id + "'><a href='" + url + "' class='url summary'>" + venue.Name + "</a></div>\n"; return html; } function addVenueMarker(venue) { var icon = new GIcon(G_DEFAULT_ICON); icon.image = "http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=FFFFFF,008CFF,000000&ext=.png"; var latLng = new GLatLng(venue.Lat, venue.Lng); var marker = new GMarker(latLng, { icon: icon }); var fn = markerClickFn(venue, latLng); GEvent.addListener(marker, "click", fn); marker.event_ = venue; marker.click_ = fn; venue.marker_ = marker; markers.push(marker); return marker; }
Es sieht aus wie die einzige Lösung, die ich das Infofenster dynamisch, um die Größe zu finden ist das Infofenster des setContent Methode aufzurufen. Sie müssen den HTML-Knoten oder die HTML-Zeichenfolge übergeben. Dies zeichnet das InfoWindow grundlegend neu. Was es im Wesentlichen macht, ist das Schließen des aktuellen und das Öffnen eines neuen. Es wird also während des Neuladens des Inhalts ein Flimmern auftreten. Diese Art von saugt. Es sieht so aus, als ob Google die v2-API eingestellt hat und es in der neueren Version sehr schwierig gemacht hat. Ich denke, Google hat eine Reihe von Sun Java-Entwicklern auf der anderen Straßenseite im Silicon Valley angeheuert, und die Leute wissen nicht, wie man einfach zu verwendende APIs wie das Microsoft-Camp bereitstellt. Wirklich frustrierend!
- 1. Google Maps Infobox - MaxWidth
- 2. Verzerrte InfoBox in Google Maps API
- 3. Google Maps InfoBox ändert Position beim Zoomen
- 4. So ändern Sie Google Maps Markersymbol dynamisch
- 5. Infobox für Bing Maps
- 6. Größe der Markierungen abhängig vom Zoom ändern Google Maps v3
- 7. Größe der Bildschaltfläche dynamisch ändern
- 8. Ausgewähltes Erntehq Größe der Größe dynamisch ändern
- 9. Google Maps API ändern?
- 10. google infoBox position
- 11. google map infobox position
- 12. Ändern der Größe Layouts dynamisch mit ViewFlipper
- 13. Ändern der Größe einer dynamisch zugewiesenen Matrix
- 14. Dynamisch in der Größe ändern Inline SVG
- 15. Größe des SplitContainers dynamisch ändern
- 16. Google Maps Wegbeschreibungen ändern, Strichfarbe ändern?
- 17. Google Maps-Flash-API: Größe anpassen
- 18. gwt-maps - Marker Offset dynamisch ändern
- 19. Google Maps dynamisch hinzugefügt mit jquery
- 20. laden Google Maps v3 dynamisch mit AJAX
- 21. Dynamisch Laden von Google Maps api
- 22. Google Maps ändert Sprache dynamisch (asynchrones Laden)
- 23. addressList Größe ist 0 Google Maps
- 24. Google Maps ändern Stil über Kontrollkästchen
- 25. Ändern der Größe/Komprimierung von Bildern für Google AMP?
- 26. iphone dev: dynamisch Größe ändern UITableView
- 27. Größe von JQuery Thickbox-Fenster dynamisch ändern
- 28. Responsive Bilder: Größe ändern oder dynamisch zuschneiden?
- 29. Dynamisch Größe ändern, um div zu füllen
- 30. Ändern Sie die Größe des Bedienfelds dynamisch
Danke, beide Antworten waren hilfreich .. Allerdings habe ich stattdessen ein maximiertes Fenster verwendet, das meiner App gut passte, und ich liebe einfach die Animation, die du bekommst, wenn sie maximiert ist ;-) – Morten
Großartig! Ich habe sogar darüber nachgedacht, das maximierte InfoWindow zu empfehlen, aber ich war mir nicht sicher, ob Sie das wollen würden, wenn die Ajax-Daten kurz wären. –