Positionner une ligne dans une carte avec OpenLayers

La méthode est identique à celle utilisée pour positionner un point (cf. Positionner une ligne dans une carte avec OpenLayers).

Voici simplement les modifications à apporter.

La ligne sera dessinée sous la forme d'une ligne rouge, de 2 pixels d'épaisseur :

var styleRed = new ol.style.Style( {
    stroke: new ol.style.Stroke( {
        color: [255 , 0 , 0 , 1],
        width: 2
    })
});

Les coordonnées comprennent maintenant 4 valeurs, deux pour le point de départ, et deux pour le points d'arrivée (coordonnées GPS) :

var long_deb = 0;
var lat_deb = 45;
var long_fin = 1;
var lat_fin = 46;

Les coordonnées sont maintenant exprimées sous la forme d'un tableau comprenant chaque point à positionner :

var coordinates = [[long_deb, lat_deb], [long_fin, lat_fin]];

La ligne est créée à partir des coordonnées, et l'objet d'affichage est généré, en définissant ensuite le style à utiliser :

var linestring = new ol.geom.LineString(coordinates, 'XY');
var lineString_feature = new ol.Feature ( {
    geometry: linestring
});
lineString_feature.setStyle(styleRed);

Le tableau de contenu est adapté :

var features = [ lineString_feature ];

Le reste est identique.

Calculer la longueur de la ligne

Si vous voulez calculer la longueur de la ligne, vous devez créer une sphère correspondant à la projection wgs84 :

//create sphere to measure on
var wgs84sphere = new ol.Sphere(6378137); // one of WGS84 earth radius'

et calculer la distance sur la sphère :

var longueur = wgs84sphere.haversineDistance([long_deb, lat_deb], [long_fin, lat_fin]);

Vous pouvez ensuite tronquer le nombre de décimales :

longueur = parseFloat(longueur.toFixed(2));

et afficher le résultat (ici, en utilisant jQuery) :

</script>
Longueur calculée (mètres) : <span id="longueur"></span>
<script>
$("#longueur").append(longueur);
</script>