2012-10-12 6 views
2

Est-il possible d'ajouter des points à une chaîne de caractères existante dans des conteneurs ouverts? J'ai un flux de points provenant du serveur que je souhaite dessiner lorsqu'ils arrivent sur le client. À l'heure actuelle, la seule façon que je peux voir pour ce faire est de tracer une ligne unique à partir du dernier point que j'ai reçu au nouveau point chaque fois qu'un nouveau point arrive, comme ceci:Ajout de points à une ligne existante

Drawer.prototype.drawPoint = function(point) 
{ 
    var line = new OpenLayers.Geometry.LineString([this.lastPoint, point]); 
    var lineFeature = new OpenLayers.Feature.Vector(line, null, this.style); 
    this.lineLayer.addFeatures([lineFeature]); 
    this.lastPoint = point; 
} 

Cela semble inefficace. Évidemment, je pourrais garder un tableau de tous les points et redessiner toute la ligne chaque fois qu'un nouveau point entre, mais cela semble inefficace aussi.

Répondre

3

OpenLayers.Geometry.LineString a une méthode addPoint(point, index) par la classe OpenLayers.Geometry.MultiPoint qu'il dérive, jetez un oeil à la source code.

Ainsi, votre solution doit être aussi simple que:

line.addPoint(point); //second parameter(index) is optional 

Vous aurez probablement besoin d'appeler la méthode redraw() sur la couche ainsi.

+3

C'est le cas. Je suis arrivé à la conclusion que les documents sur le site OpenLayers sont sans valeur! (http://dev.openlayers.org/releases/OpenLayers-2.7/doc/apidocs/files/OpenLayers/Geometry/LineString-js.html). Doit également montrer les méthodes héritées. – marchaos

+0

Oui, je recommande de référencer le code source au lieu de la documentation. C'est bien structuré et c'est facile de trouver des choses là-bas. Vous trouverez également souvent des commentaires qui clarifient la façon dont les choses fonctionnent que vous ne trouverez jamais dans la documentation. – igorti

+0

Dans OL3, cela s'appelle maintenant appendCoordinate. ([documentation] (http://openlayers.org/en/v3.18.2/apidoc/ol.geom.LineString.html#appendCoordinate)) – jaySon

Questions connexes