2010-09-23 17 views
0

J'utilise JavaScript Mapping Library - OpenLayer pour créer une superposition de marqueurs. Je veux contrôler les marqueurs de manière dynamique: en ajouter de nouveaux et supprimer les marqueurs existants de la couche.JavaScript - Comment faire un tableau qui contient des objets par référence?

la façon d'ajouter un nouveau marqueur à la couche est par la commande:

markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon)); 

comme vous pouvez le voir, les paramètres d'initialisation ne contiennent que les coordonnées et l'image d'icône, pas id, même pas comme un paramètre optionnel .

afin de contrôler les marqueurs que je veux créer un tableau bidimensionnel, qui contiennent le tableau de marqueurs par la référence et tableau ID.

puis, quand je veux supprimer un marqueur de la couche, la commande sera simplement:

markers.removeMarker(ArrayMarkers[i]); 

Comment puis-je pousser un élément tableau JavaScript par référence?

Comment puis-je exécuter sur les éléments ArrayMarkers par référence?

Répondre

4

Essayez:

var ArrayMarkers = []; 
var myMarker = new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon); 
markers.addMarker(myMarker); 
ArrayMarkers.push(myMarker); 

Fondamentalement, JavasScript utilise généralement des références pour passer des objets autour. Vous passez déjà une référence dans la bibliothèque. Vous pouvez utiliser la même technique.

+0

myMarker pointe vers le même objet à la fois dans les marqueurs et dans ArrayMarkers? –

+0

Oui ............ – sje397

1

En JavaScript, vous ne pouvez pas choisir de pousser une variable par valeur de référence ... ceci est fait automatiquement en fonction du type de variable. Je suppose que vos marqueurs sont des objets. Donc, ils seront poussés dans le tableau par référence. Les identifiants sont des chaînes, ils seront poussés par valeur.