1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
/* map edit */
/* availaible map layers */
var layerMapnik = new OpenLayers.Layer.OSM.Mapnik('Mapnik');
var layerMarkers = new OpenLayers.Layer.Markers('POIs');
/* default size and offset for icon */
var size = new OpenLayers.Size(21, 25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);
/* set a marker with a click on the map */
var setMarker = function (event){
event = event || window.event;
lonlat = layerMarkers.getLonLatFromViewPortPx(event.xy);
putMarker(lonlat);
OpenLayers.Event.stop(event);
}
/* put the marker on the map and update latitude and longitude fields */
var putMarker = function (lonlat){
if (marker) {
layerMarkers.removeMarker(marker);
}
var marker = new OpenLayers.Marker(lonlat.clone(), icon);
layerMarkers.addMarker(marker);
lonlat = lonlat.clone().transform(map.getProjectionObject(),
epsg_display_projection);
document.getElementById('id_point').value = 'POINT(' + lonlat.lon +
' ' + lonlat.lat + ')';
document.getElementById('live_latitude').value = lonlat.lon;
document.getElementById('live_longitude').value = lonlat.lat;
}
/* main initialisation function */
function init(){
map = new OpenLayers.Map ('map_edit', {
controls:[new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Attribution()],
maxExtent: maxExtent,
maxResolution: 156543.0399,
units: 'm',
projection: epsg_projection,
displayProjection: epsg_display_projection,
} );
layerMarkers.setOpacity(0.5);
map.addLayers([layerMapnik, layerMarkers]);
map.events.register('click', map, setMarker);
map.setCenter(centerLonLat, 12);
}
/* code for drag'n drop : delayed for further version of openlayers */
/*
function init_b(){
init();
marker.events.register('mouseup', marker, releaseMarker);
marker.events.register('mousedown', marker, catchMarker);
marker.events.register('mouseover', marker, markerOver);
marker.events.register('mouseout', marker, markerOut);
map.events.register('mousemove', map, onMouseMove);
map.events.register('moveend', map, onMoveEnd);
}
var marker_catched = false;
function catchMarker(event){
marker_catched = true;
event = event || window.event;
OpenLayers.Event.stop(event);
}
function releaseMarker(event){
event = event || window.event;
if(marker_catched) {
marker_catched = false;
lonlat = layerMarkers.getLonLatFromViewPortPx(marker.icon.px);
marker.lonlat = lonlat;
document.getElementById('latitude').value = marker.lonlat.lat;
document.getElementById('longitude').value = marker.lonlat.lon;
}
OpenLayers.Event.stop(event);
}
function onMouseMove(event) {
event = event || window.event;
if (!marker_catched) {return;}
marker.icon.px = null;
marker.icon.moveTo(new OpenLayers.Pixel(event.xy.x + delta_x,
event.xy.y + delta_y + 20));
defLiveLatLon();
lonlat = layerMarkers.getLonLatFromViewPortPx(marker.icon.px).transform(epsg_projection, epsg_display_projection);
live_longitude.value = lonlat.lon;
live_latitude.value = lonlat.lat;
OpenLayers.Event.stop(event);
}
function onMoveEnd(event) {
event = event || window.event;
marker.icon.px = map.getPixelFromLonLat(marker.lonlat);
OpenLayers.Event.stop(event);
}
var markerOver = function (evt) {
document.body.style.cursor='pointer';
OpenLayers.Event.stop(evt);
};
var markerOut = function (evt) {
document.body.style.cursor='auto';
OpenLayers.Event.stop(evt);
};
*/
|