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.
Si vous voulez calculer la longueur de la ligne, vous devez créer une sphère correspondant à la projection wgs84 :
//create sphere to measure onvar 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>