Google Maps: redimensionner Dynamiquement infowindow
Comment redimensionner la fenêtre d'informations une fois que c'est ouvert? J'ai un lien hypertexte à l'intérieur de la fenêtre qui génère un AJAX-demande; sur le rappel, je voudrais redimensionner la fenêtre d'informations.
Il n'est pas possible d'animer le redimensionnement de la fenêtre d'informations, mais il y a un réinitialiser fonction. La documentation dit que vous pouvez laisser un paramètre null, mais si vous laissez le paramètre 'size', null, vous obtiendrez une erreur. Cela signifie que vous devez spécifier la taille de la bulle informative.
Cependant, depuis que les ruines du point d'origine de façon dynamique le redimensionnement de la fenêtre, je vous recommande fortement de simplement fermer l'original de la fenêtre d'informations et la création d'un nouveau - qui est ce que la fonction de réinitialisation apparaît à faire de toute façon.
Merci, les deux réponses ont été utile.. Mais j'ai fini par utiliser une fenêtre maximisée à la place qui convenait à mon app bien, et j'adore l'animation que vous obtenez lorsque c'est maximisée 😉 Super! J'ai effectivement envisagé de recommander l'maximisée infoWindow, mais je n'étais pas sûr que vous voulez que, si les données ajax fut de courte durée.
Découvrez la suite. Ce qui se passe, c'est que je créer une fenêtre d'information avec un minimum de
info (voir getInfoWindowHtml). Le gmap.openInfoWindowHtml appel d'offre pour une fonction de callback qui est appelée après l'infowindow s'ouvre. Dans ce rappel, faire de votre appel ajax et de réinitialiser le contenu de la fenêtre. Il y a deux problèmes cependant:
je ne pourrais pas faire la fenêtre de redimensionnement exactement le contenu retourné, donc j'ai simplement utilisé une taille standard (voir le new GSize(300, 150) dans la fonction anonyme retourné par markerClickFn)
Im mon cas, si un marqueur est près de les extrêmes de l'image des limites, des pièces de la fenêtre d'informations sont rognés. OIE, la carte ne recentrer pour inclure l'infowindow. Je peux probablement résoudre ce problème, mais il n'a pas été un problème urgent.
function markerClickFn(venue, latlng){returnfunction(){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(),newGSize(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 infowindowvar 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 infowindowvar html ="<div id='info-"+ venue.Id+"'><a href='"+ url +"' class='url summary'>"+ venue.Name+"</a></div>\n";return html;}function addVenueMarker(venue){var icon =newGIcon(G_DEFAULT_ICON);
icon.image ="http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=FFFFFF,008CFF,000000&ext=.png";var latLng =newGLatLng(venue.Lat, venue.Lng);var marker =newGMarker(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;}
Il semble que la seule solution que j'ai trouvé pour redimensionner l'InfoWindow dynamiquement est l'appel de l'InfoWindow de setContent méthode. Vous aurez besoin de passer dans le nœud HTML ou le code HTML de chaîne. En fait cela retrace l'InfoWindow. Ce qu'il consiste essentiellement à ne est proche de l'actuel, et ouvre un nouveau. Donc, il va voir un scintillement pendant le rechargement de contenu. Ce genre de suce. Il semble que Google obsolète leur API v2 et fait des choses vraiment difficiles à faire dans la version la plus récente. Je pense que Google a embauché un groupe de Sun Java développeurs dans la rue, dans la Silicon Valley, et ils ne le savez pas comment faire pour donner de simples à l'utilisation de l'API comme le Microsoft camp. Vraiment frustrant!
Il n'est pas possible d'animer le redimensionnement de la fenêtre d'informations, mais il y a un réinitialiser fonction. La documentation dit que vous pouvez laisser un paramètre null, mais si vous laissez le paramètre 'size', null, vous obtiendrez une erreur. Cela signifie que vous devez spécifier la taille de la bulle informative.
Cependant, depuis que les ruines du point d'origine de façon dynamique le redimensionnement de la fenêtre, je vous recommande fortement de simplement fermer l'original de la fenêtre d'informations et la création d'un nouveau - qui est ce que la fonction de réinitialisation apparaît à faire de toute façon.
Super! J'ai effectivement envisagé de recommander l'maximisée infoWindow, mais je n'étais pas sûr que vous voulez que, si les données ajax fut de courte durée.
OriginalL'auteur Chris B
Découvrez la suite. Ce qui se passe, c'est que je créer une fenêtre d'information avec un minimum de
info (voir getInfoWindowHtml). Le gmap.openInfoWindowHtml appel d'offre pour une fonction de callback qui est appelée après l'infowindow s'ouvre. Dans ce rappel, faire de votre appel ajax et de réinitialiser le contenu de la fenêtre. Il y a deux problèmes cependant:
je ne pourrais pas faire la fenêtre de redimensionnement exactement le contenu retourné, donc j'ai simplement utilisé une taille standard (voir le new GSize(300, 150) dans la fonction anonyme retourné par markerClickFn)
Im mon cas, si un marqueur est près de les extrêmes de l'image des limites, des pièces de la fenêtre d'informations sont rognés. OIE, la carte ne recentrer pour inclure l'infowindow. Je peux probablement résoudre ce problème, mais il n'a pas été un problème urgent.
OriginalL'auteur JBland
Il semble que la seule solution que j'ai trouvé pour redimensionner l'InfoWindow dynamiquement est l'appel de l'InfoWindow de setContent méthode. Vous aurez besoin de passer dans le nœud HTML ou le code HTML de chaîne. En fait cela retrace l'InfoWindow. Ce qu'il consiste essentiellement à ne est proche de l'actuel, et ouvre un nouveau. Donc, il va voir un scintillement pendant le rechargement de contenu. Ce genre de suce. Il semble que Google obsolète leur API v2 et fait des choses vraiment difficiles à faire dans la version la plus récente. Je pense que Google a embauché un groupe de Sun Java développeurs dans la rue, dans la Silicon Valley, et ils ne le savez pas comment faire pour donner de simples à l'utilisation de l'API comme le Microsoft camp. Vraiment frustrant!
OriginalL'auteur GoogleMapper