Je travaille dans Flash Builder 4 avec l'API ActionScript de Google Map. J'ai créé une carte, chargé des marqueurs personnalisés et ajouté des écouteurs MouseEvent à chaque marqueur.API Google Maps dynamique Contenu HTML InfoWindow
Le problème vient lorsque je charge un panneau InfoWindow. Je souhaite définir de manière dynamique le htmlContent en fonction des informations stockées dans une base de données. Le problème est que cette information peut changer toutes les deux secondes et chaque marqueur a un ensemble de données unique, donc je ne peux pas le définir de façon statique au moment où je crée réellement les marqueurs. J'ai une méthode qui chaque minute ou alors charger tous les enregistrements de ma base de données dans une variable d'objet. Tout ce que j'ai besoin d'afficher dans htmlContent est contenu dans cet objet sous un identifiant unique. Le point fondamental du problème est qu'il n'y a aucun moyen pour moi d'identifier de manière unique une fenêtre d'information, donc je ne peux pas déterminer quelles informations à tirer dans le panneau.
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng) }, false, 0, false);
C'est mon écouteur d'événement de souris. La fonction que j'appelle, « showInfowindow » ressemble à ceci:
private function showInfoWindow(latlng:LatLng):void
{
var options:InfoWindowOptions = new InfoWindowOptions({title: appData[*I NEED A UNIQUE ID HERE!!!*].type + " Summary", contentHTML: appData[*I NEED A UNIQUE ID HERE!!!*].info});
this.map.openInfoWindow(latlng, options);
}
Je croyais être sur quelque chose en étant capable de passer une variable dans ma déclaration d'écouteur d'événement, mais il déteste tout simplement avoir une variable dynamique passée à travers, il renvoie uniquement la dernière utilisation de la valeur.
Exemple:
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng, record.unit_id) }, false, 0, false);
Cette solution est douloureusement à travailler. Je parcoure une boucle pour créer mes marqueurs lorsque j'essaie la solution ci-dessus et que je passe au-dessus d'un marqueur. Je reçois des informations, mais les informations de chaque marqueur reflètent toutes les informations que le dernier marqueur avait.
Je m'excuse pour la longue explication, mais je voulais juste que ma question soit aussi claire que possible. Est-ce que quelqu'un a des idées sur la façon de réparer ma solution presque-là-bas que j'ai posté au bas de l'écran ou de toute autre solution?
Merci à l'avance,
Peter Hanneman
Je n'ai aucune expérience avec ActionScript, mais cela ressemble à un problème de fermeture. Vous voudrez peut-être consulter cet article: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures#Creating_closures_in_loops.3a_A_common_mistake (sur JavaScript, mais je suppose que la même chose s'applique à Action Script) –