Projet

Général

Profil

Révision 5c5b7504

Ajouté par Jocelyn Delande il y a presque 11 ans

Added a display of all the ref_points on the map.

Voir les différences:

ajax/ref_points.php
1
<?php
2

  
3

  
4
/**
5
 *  An example CORS-compliant method.  It will allow any GET, POST, or OPTIONS requests from any
6
 *  origin.
7
 *
8
 *  In a production environment, you probably want to be more restrictive, but this gives you
9
 *  the general idea of what is involved.  For the nitty-gritty low-down, read:
10
 *
11
 *  - https://developer.mozilla.org/en/HTTP_access_control
12
 *  - http://www.w3.org/TR/cors/
13
 *
14
 */
15
function cors() {
16
    // Allow from any origin
17
    if (isset($_SERVER['HTTP_ORIGIN'])) {
18
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
19
        header('Access-Control-Allow-Credentials: true');
20
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
21
    }
22

  
23
    // Access-Control headers are received during OPTIONS requests
24
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
25

  
26
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
27
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
28

  
29
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
30
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
31

  
32
        exit(0);
33
    }
34
}
35

  
36
cors();
37

  
38
function ref_point_to_geoJSONFeature($name, $values) {
39
	return array("type" => "Feature",
40
	             "geometry" => array(
41
	                                 "type" => "Point",
42
	                                 "coordinates" => [$values[1],$values[0]]
43
	                                 ),
44
	             "properties" => array("name" => $name)
45
	             );
46
}
47

  
48
function get_ref_points() {
49
	$ref_points_filename = '../ref_points.local.php';
50
	if (file_exists($ref_points_filename)) {
51
		include $ref_points_filename;
52
		return $ref_points;
53
	} else {
54
		return array();
55
	}
56
}
57

  
58
$json = array(
59
              "type" => "FeatureCollection",
60
              "features"=> array()
61
              );
62

  
63
foreach (get_ref_points() as $name => $vals) {
64
	$json['features'][] = ref_point_to_geoJSONFeature($name, $vals);
65
}
66

  
67
echo json_encode($json);
68

  
69
?>
js/utils_osm.js
225 225
	    alert(position.lat.toFixed(5) + ', ' + position.lon.toFixed(5));
226 226
	});
227 227
    }
228

  
229
	return map;
230
}
231

  
232
function mk_all_refpoints_layer() {
233
	var layer = new OpenLayers.Layer.Vector(
234
		"Reference points",{
235
			projection: new OpenLayers.Projection("EPSG:4326"),
236
			strategies: [new OpenLayers.Strategy.Fixed()],
237
			protocol: new OpenLayers.Protocol.HTTP({
238
				url: 'ajax/ref_points.php',
239
				format: new OpenLayers.Format.GeoJSON(),
240
			})
241
		});
242
	return layer;
228 243
}
244

  
245

  
246
function add_refpoint_control(layer, map) {
247
	var selectControl ;
248
	selectControl = new OpenLayers.Control.SelectFeature(
249
		layer,{
250
			onSelect:function(feature) {
251
				var popup = new OpenLayers.Popup.FramedCloud(
252
					feature.attributes.name,
253
					feature.geometry.getBounds().getCenterLonLat(),
254
					null,
255
					"<div>" + feature.attributes.name+"</div>",
256
					null, true, function() {selectControl.unselect(feature);});
257
				feature.popup = popup;
258
				map.addPopup(popup);},
259

  
260
			onUnselect:function(feature) {
261
				map.removePopup(feature.popup);
262
				feature.popup.destroy();
263
				feature.popup = null;
264
			}});
265

  
266
	map.addControl(selectControl);
267
	selectControl.activate();
268
}
269

  
show_capline.php
86 86
}
87 87
?>
88 88
<script>
89
window.onload = draw_cap_map;
89
window.onload = function() {
90
  var map = draw_cap_map();
91
  all_refpoints = mk_all_refpoints_layer()
92
  map.addLayer(all_refpoints);
93
  add_refpoint_control(all_refpoints, map);
94
}
90 95
</script>
91 96
</head>
92 97
<body>

Formats disponibles : Unified diff