2p2r / velobs_web

Application web permettant aux cyclistes de signaler les problèmes sur les aménagements cyclables.
GNU General Public License v3.0
22 stars 14 forks source link

Affichage de couches externes sur Velobs #204

Closed GMalard closed 1 year ago

GMalard commented 5 years ago

Bonjour,

Velobs est en cours de test sur Albi avec l'association TAVPA (velobs.tavpa.fr). Pour personnaliser le fond de carte, plutôt que d'utiliser OpenCycleMap, nous avons récupéré les données du plan cyclable de l'agglo au format vectoriel et nous les avons insérés dans la carte publique sous forme de fichiers kml. Dans cette solution, un peu rapide, chaque type d'aménagement est une couche distincte, même s'il serait plus propre de n'avoir qu'une couche et un style variant en fonction des attributs des objets dans le kml.

Voici les quelques lignes ajoutées dans map.js juste avant "publicMap.addLayer(layerNewObservation);"

var layerBC = new OpenLayers.Layer.Vector("Bandes cyclables", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_BC.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "lightgreen", strokeWidth: 5, strokeOpacity: 0.8} } ); layerBC.setZIndex(3);

var layerchaucidou = new OpenLayers.Layer.Vector("Chaucidoux", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_chaucidou.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "blue", strokeWidth: 5, strokeOpacity: 0.5} } ); layerchaucidou.setZIndex(3);

var layerDS = new OpenLayers.Layer.Vector("Doubles sens cyclables", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_DS.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "red", strokeWidth: 5, strokeOpacity: 0.5} } ); layerDS.setZIndex(3);

var layerPPV = new OpenLayers.Layer.Vector("Pistes piétons vélos", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_PPV.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "Fuchsia", strokeWidth: 5, strokeOpacity: 0.5} } ); layerPPV.setZIndex(3);

var layerProjet = new OpenLayers.Layer.Vector("Projets", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_projet.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "Red", strokeWidth: 5, strokeOpacity: 0.5, strokeDashstyle: "dot"} } ); layerProjet.setZIndex(3);

var layerVV = new OpenLayers.Layer.Vector("Véloroutes / Voies vertes", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_VV.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "DarkGreen", strokeWidth: 5, strokeOpacity: 0.5} } ); layerVV.setZIndex(3);

var layerZR = new OpenLayers.Layer.Vector("Zones de rencontre", {strategies: [new OpenLayers.Strategy.Fixed()], projection: new OpenLayers.Projection("EPSG:4326"), reportError:true,styleMap:stylePole, visibility: true, displayInLayerSwitcher: true, protocol: new OpenLayers.Protocol.HTTP({ url: "resources/kml/reseau_ALBI_ZR.kml", format: new OpenLayers.Format.KML({format: OpenLayers.Format.KML})}), style: {strokeColor: "Gold", strokeWidth: 5, strokeOpacity: 0.5} } ); layerZR.setZIndex(3);

publicMap.addLayer(layerBC); publicMap.addLayer(layerchaucidou); publicMap.addLayer(layerDS); publicMap.addLayer(layerPPV); publicMap.addLayer(layerVV); publicMap.addLayer(layerZR); publicMap.addLayer(layerProjet);

gerald2545 commented 5 years ago

Merci Guillaume pour ton retour qui permet d'améliorer velobs. A généraliser dans une prochaine version pour que d'autres puissent en bénéficier et qu'on n'ait pas à refaire ces modifs à chaque nouvelle version.

Par exemple, appliquer le même fonctionnement qu'avec les fonds de cartes (tableau mapLayersArray dans lib/js/key.js.template):

GMalard commented 5 years ago

Bonjour Gerald (et merci pour le dev de Velobs !)

tu te sens de faire un fork + merge request avec ces modifs?

Oui ça marche, peut-être pas dans l'instant mais promis je m'y attèle