web-dev-qa-db-fra.com

Dessiner un chemin avec une ligne dans OpenLayers en utilisant JavaScript

J'ai vu les exemples présentés ici de la manière de tracer une ligne, mais les exemples montrent uniquement comment le faire avec la souris, en cliquant sur.

Ce que je veux faire, c'est dessiner la ligne manuellement à l'aide de JavaScript, à partir d'une liste de coordonnées de longitude et de latitude.

La raison pour laquelle je ne peux pas travailler sur la source indiquée dans le lien ci-dessus, c'est parce qu'ils appellent uniquement activate sur la fonctionnalité, puis laissez l'utilisateur pointer et cliquer sur la carte.

Quelqu'un a-t-il déjà tracé un chemin sur une carte OpenLayers par programmation? 

Ce que je veux faire est exactement ceci: http://openspace.ordnancesurvey.co.uk/openspace/example4.html , mais sans utiliser OpenSpace.

31
Andreas Grech

Vous devez utiliser l’objet LineString

Voici un exemple:

var lineLayer = new OpenLayers.Layer.Vector("Line Layer"); 

map.addLayer(lineLayer);                    
map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));                                     
var points = new Array(
   new OpenLayers.Geometry.Point(lon1, lat1),
   new OpenLayers.Geometry.Point(lon2, lat2)
);

var line = new OpenLayers.Geometry.LineString(points);

var style = { 
  strokeColor: '#0000ff', 
  strokeOpacity: 0.5,
  strokeWidth: 5
};

var lineFeature = new OpenLayers.Feature.Vector(line, null, style);
lineLayer.addFeatures([lineFeature]);

En supposant que map est votre objet cartographique et que lon et lat soient des valeurs flottantes.

53
Drahcir

cette page est un exemple classique d’animation via javascript avec des openlayers.

il utilise une stratégie de filtrage pour définir ce qu’il faut montrer à quel moment dans le temps.

javascript complet disponible.

1
tony gil

Je ne l'ai jamais fait moi-même auparavant, mais je sais qu'OpenSteetMap le fait. Par exemple:

http://www.openstreetmap.org/?way=23649627

Aucune idée de la difficulté de travailler avec leur code.

0
RoToRa