PageSourceSearch

http://vttrack.fr/js/OpenLayers-2.12/lib/OpenLayers/Layer/Editor.js?1790354456

js vttrack.fr collected 2026-09-25 18:39:16 UTC 6,764 bytes, 181 lines download raw bytes

1/*DCM++ © Dominique Cavailhez 2012.
2 * Published under the Clear BSD license.
3 * See http://svn.openlayers.org/trunk/openlayers/license.txt for the full text of the license. */
4
5/**
6 * @requires OpenLayers/Layer/Vector.js
7 */
8
9/**
10 * Class: OpenLayers.Control.Editor
11 * Create an editable instance of OpenLayers.Layer.Vector
12 *
13 * Inherits from:
14 *  - <OpenLayers.Layer.Vector>
15 */
16
17OpenLayers.Layer.Editor = OpenLayers.Class(OpenLayers.Layer.Vector, {
18	format: new OpenLayers.Format.GML (), // Format par défaut                           
19	
20	bounds: null, // Bornes cumulées
21		
22    initialize: function (name, url, options) {
23		/*if (OpenLayers.BROWSER_NAME == 'msie') {
24			alert ('Editeur non supporté sous Internet Explorer');
25			return;
26		}*/
27		OpenLayers.Util.extend (this, options);
28		
29		// Initialisation de la stratégie de sauvegarde
30		this.saveStrategy = new OpenLayers.Strategy.Save();
31		this.saveStrategy.events.register ('success', null, function () {
32			//alert ("Modifications enregistrées");
33			//if (confirm('Ok -> Enregistrer le tracé\nAnnuler -> Afficher sous VisuGPX')) window.open('http://www.visugpx.com/editgpx/serveur_gml.php5?alt=1','_new'); else window.open('http://www.visugpx.com/editgpx/serveur_gml.php5?alt=1&visugpx=1','_new');this.layer.refresh();
34			//if (confirm('Ok -> Enregistrer le tracé\nAnnuler -> Afficher sous VisuGPX')) document.location.href='http://www.visugpx.com/editgpx/serveur_gml.php5?alt=1'; else document.location.href='http://www.visugpx.com/editgpx/serveur_gml.php5?alt=1&visugpx=1';this.layer.refresh();
35			
36			this.layer.refresh (); // Va rechercher le résultat sur le serveur et le réaffiche pour être sur qu'on a bien enregistré
37		});
38		this.saveStrategy.events.register ('fail', null, function () {
39			alert ("Erreur lors de l'enregistrement des modifications");
40		});
41
42
43var s = new OpenLayers.StyleMap();
44        //s.styles['default'].defaultStyle.strokeColor = '#df08f9';
45	s.styles['default'].defaultStyle.strokeColor = '#fde804';
46        s.styles['default'].defaultStyle.strokeWidth = 4;
47        s.styles['default'].defaultStyle.cursor = 'pointer';
48        s.styles.select.defaultStyle.strokeColor = '#df08f9';
49        s.styles.select.defaultStyle.strokeOpacity = 0.3;
50
51
52        OpenLayers.Layer.Vector.prototype.initialize.call (this, name, {
53			styleMap: s,
54			/*
55			new OpenLayers.StyleMap({
56				'default': {
57					strokeColor: '#df08f9',
58					strokeWidth: 5,
59					strokeOpacity: 0.7,
60					cursor: 'pointer',
61					fillColor: 'orange',
62					fillOpacity: 0.4, 
63					pointRadius: 6
64				},
65				'select': {
66					strokeOpacity: 0.3
67				}
68			}),*/
69
70			protocol: new OpenLayers.Protocol.HTTP ({
71				url: 'http://www.vttrack.fr/404',
72				format: this.format
73			}),
74			strategies: [
75				this.saveStrategy,
76				new OpenLayers.Strategy.Fixed ()
77			],
78			onFeatureInsert: function () { // Quand la couche est reçue
79				//this.map.zoomToExtent (this.getDataExtent ()); // On recadre à chaque fichier car on ne sait pas dans quel ordre ils sont uploadés
80			}
81		});
82    },
83
84    setMap: function(map) {        
85        OpenLayers.Layer.Vector.prototype.setMap.apply(this, arguments);
86
87		// add some editing tools to a panel
88/*
89		var panel = new OpenLayers.Control.Panel ({
90			displayClass: 'olControlEditingToolbar'
91		});
92		panel.addControls([
93
94			new OpenLayers.Control.ExtendedNavigation ({
95				title: "Naviguer sur la carte, utiliser les autres fonctions VTTrack"
96			}),
97			new OpenLayers.Control.VisuGPXSaveFeature ({
98				layer: this,
99				title: "Sauvegarder le tracé"
100			}),
101			new OpenLayers.Control.VisuGPXViewFeature ({
102				layer: this,
103				title: "Voir le tracé sur VisuGPX"
104			}),
105
106			new OpenLayers.Control.DeleteFeature (this, {
107				title:
108					"Supprimer une ligne: Cliquer sur la ligne puis accepter"
109			}),
110			new OpenLayers.Control.CutFeature (this, {
111				title:
112					"Supprimer un sommet: Cliquer sur la ligne puis sur le sommet à supprimer\n\n"+
113					"Couper une ligne en 2: Cliquer sur la ligne puis sur le mileu du segment à supprimer"
114			}),
115			new OpenLayers.Control.ModifyFeature (this, {
116				deleteCodes: [32, 46, 67, 99, 68, 100, 83, 115],
117				title:
118					"Déplacer un sommet: Cliquer sur la ligne, cliquer sur le sommet, maintenir et faire glisser\n\n"+
119					"Ajouter un sommet à une ligne: Cliquer sur la ligne, cliquer et faire glisser le mileu d un segment\n\n"+
120					"Supprimer un sommet d une ligne: Cliquer sur la ligne, survoler le sommet à supprimer et apuyer sur S"
121			}),
122			new OpenLayers.Control.DrawFeatureExtended (this, OpenLayers.Handler.Path, {
123				displayClass: 'olControlDrawFeaturePoint', 
124				title: 
125					"Ajouter une ligne: Cliquer à l'emplacement du début, sur chaque point intermédiaire, double cliquer à la fin\n\n"+
126					"Etendre une ligne: Cliquer sur une extrémité, sur chaque point intermédiaire, double cliquer à la fin\n\n"+
127					"Joindre deux lignes: Cliquer sur une extrémité, double cliquer sur l'autre"
128			})
129		]);
130		if (!mobile)
131		map.addControl(panel);
132*/
133		// configure the snapping agent
134		var snap = new OpenLayers.Control.Snapping({layer: this});
135		map.addControl(snap);
136		snap.activate();
137    },
138
139	// On a lu le nom d'un fichier sur le disque
140	// <input type="file" onchange="Editor.onAddFile(this.files)" />
141    addFiles: function(files) {
142		if (window.FileReader)
143			for (i in files)
144				if (this.file = files[i]) {
145					var fr = new FileReader();
146					fr.owner = this; // Pour référence dans le callback
147					fr.onload = function (e) {this.owner.addFile (e.target.result)}
148					fr.readAsText (this.file);
149				} else 
150					alert ('Failed to load file');
151		else 
152			alert ('FileReader non supporté par cet explorateur');
153    },
154
155	// Le contenu du fichier est lu
156    addFile: function (file) {
157		var format = new OpenLayers.Format.GPX({
158			'internalProjection': this.map.baseLayer.projection,
159			'externalProjection': new OpenLayers.Projection('EPSG:4326')
160		});
161		var features = format.read(file);
162		if (features) {
163			// On recopie tous les points dans une seule nouvelle ligne pour éviter les points orphelins partout
164			/*var ligne = new OpenLayers.Feature.Vector (
165				new OpenLayers.Geometry.LineString()
166			);
167			for (f in features) {
168				var vertices = features[f].geometry.getVertices ();
169				for (v in vertices)
170					ligne.geometry.addComponent (vertices [v].clone ()); // On les insère dans la nouvelle ligne
171			}*/
172			this.addFeatures (features);
173			/*this.boundsAdded = this.boundsAdded
174				? this.boundsAdded.extend (ligne.geometry.getBounds()) // On cumule les bornes
175				: ligne.geometry.getBounds();*/
176		}
177		this.map.zoomToExtent (this.getDataExtent ());
177 // On recadre à chaque fichier car on ne sait pas dans quel ordre ils sont uploadés
178    },
179   
180	CLASS_NAME: "OpenLayers.Layer.Editor" 
181});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.