diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-06 16:20:42 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-06 16:20:42 +0200 |
| commit | 2dc3990379beea996d88737122e9eeaa00bf212f (patch) | |
| tree | 1d0d858a58de09118ac461f88a91a9ddd866ba29 /chimere/static | |
| parent | 9642d96c9328b61a206a7a5d4df7bbc54de38946 (diff) | |
| download | Chimère-2dc3990379beea996d88737122e9eeaa00bf212f.tar.bz2 Chimère-2dc3990379beea996d88737122e9eeaa00bf212f.zip | |
Manage point edition
Diffstat (limited to 'chimere/static')
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 96 |
1 files changed, 49 insertions, 47 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index 565598f..79a9e37 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -339,7 +339,7 @@ function transform(obj) { // popup management settings.popup_item = document.getElementById('popup'); settings.popup = new ol.Overlay({ - element: popup, + element: settings.popup, positioning: ol.OverlayPositioning.BOTTOM_LEFT, stopEvent: false }); @@ -407,8 +407,8 @@ function transform(obj) { source: settings.sourceVectors }); settings.map.addLayer(settings.layerVectors); - if (settings.edition && (settings.edition_type == 'polygon' - || settings.edition_type == 'route')){ + if (settings.edition){ //&& (settings.edition_type == 'polygon' + // || settings.edition_type == 'route')){ settings.features = new ol.Collection(); @@ -448,7 +448,7 @@ function transform(obj) { settings.map.addLayer(settings.editionVector); - var edition_type; + var edition_type = 'Point'; if (settings.edition_type == 'route') edition_type = 'LineString'; if (settings.edition_type == 'polygon') edition_type = 'Polygon'; @@ -710,10 +710,10 @@ function transform(obj) { activateContextMenu: function(){ settings.edition_type_is_route = false; - settings.map.events.unregister('click', settings.map, - methods.setMarker); - settings.map.events.register('click', settings.map, - methods.displayMapMenu); + // settings.map.events.unregister('click', settings.map, + // methods.setMarker); + // settings.map.events.register('click', settings.map, + // methods.displayMapMenu); }, activatePolygonEdit: function(){ @@ -725,8 +725,8 @@ function transform(obj) { return; settings.edition_type_is_route = true; methods.cleanMarker(); - settings.map.events.unregister('click', settings.map, - methods.setMarker); + // settings.map.events.unregister('click', settings.map, + // methods.setMarker); if (settings.routing){ settings.map.events.register('click', settings.map, methods.displayMapMenu); @@ -746,10 +746,10 @@ function transform(obj) { if (settings.current_popup != null) { settings.current_popup.hide(); } - settings.map.events.unregister('click', settings.map, - methods.displayMapMenu); - settings.map.events.register('click', settings.map, - methods.setMarker); + // settings.map.events.unregister('click', settings.map, + // methods.displayMapMenu); + //settings.map.events.register('click', settings.map, + // methods.setMarker); }, // change map_layer changeMapLayer: function(map_idx){ @@ -1093,6 +1093,10 @@ function transform(obj) { settings.draw_activated = true; settings.modify_activated = true; }, + activateModify: function (){ + settings.map.addInteraction(settings.modify); + settings.modify_activated = true; + }, deactivateDraw: function (){ if (settings.draw_activated){ settings.map.removeInteraction(settings.draw); @@ -1846,12 +1850,6 @@ function transform(obj) { settings.layerDbFeatures.getDataExtent()); }, // methods for edition - setMarker: function (event){ - event = event || window.event; - var lonlat = settings.map.getLonLatFromViewPortPx(event.xy); - methods.putEditMarker(lonlat, false); - OpenLayers.Event.stop(event); - }, cleanMarker: function(){ if (settings.current_edit_feature) { settings.layerDbFeatures.removeMarker(settings.current_edit_feature); @@ -1859,40 +1857,34 @@ function transform(obj) { }, /* put the marker on the map and update latitude and longitude fields */ putEditMarker: function (lonlat, zoom){ - methods.cleanMarker(); - settings.current_edit_feature = new OpenLayers.Marker(lonlat.clone(), - settings.default_icon); - settings.layerDbFeatures.addMarker(settings.current_edit_feature); - methods.updateMarkerInput(); + if (settings.features.getLength()) settings.features.pop(); + console.log(lonlat); + var point = new ol.geom.Point(lonlat); + point.transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION); + var feature = new ol.Feature({ + geometry: point + }); + + settings.features.push(feature); + methods.updateGenInput(); /* zoom to the point */ if (zoom){ - var bounds = settings.layerDbFeatures.getDataExtent(); - if (bounds) settings.map.zoomToExtent(bounds); + var view = settings.map.getView(); + view.fit(settings.editionSource.getExtent(), settings.map.getSize()); + view.setZoom(view.getZoom() - 11); } return; }, - updateMarkerInput: function(){ - if (!settings.current_edit_feature) { - return; - } - lonlat = settings.current_edit_feature.lonlat.clone().transform( - settings.map.getProjectionObject(), - EPSG_DISPLAY_PROJECTION); - $('#'+settings.input_id).val( - 'POINT(' + lonlat.lon + ' ' + lonlat.lat + ')'); - if($('#live_latitude').length){ - $('#live_latitude').val(lonlat.lat); - $('#live_longitude').val(lonlat.lon); - } - - }, updateInput: function(){ if (settings.edition_type == 'linestring'){ methods.updateRoutingInput(); } if (settings.edition_type == 'polygon'){ - methods.updatePolygonInput(); + methods.updateGenInput('polygon'); } + if (settings.edition_type == 'marker'){ + methods.updateGenInput('marker'); + }; }, updateRoutingInput: function(){ if (!settings.current_routes_features) { @@ -1915,16 +1907,26 @@ function transform(obj) { var linestring = new OpenLayers.Geometry.LineString(point_array); jQuery('#id_route').val(String(linestring)); }, - updatePolygonInput: function(){ + updateGenInput: function(){ var features = settings.editionSource.getFeatures(); + var input_id = '#'; + if (settings.edition_type == 'marker') input_id += settings.input_id; + if (settings.edition_type == 'polygon') input_id += 'id_polygon'; + if (!features.length) { - jQuery('#id_polygon').val(''); + jQuery(input_id).val(''); return; } var wkt = settings.WKT.writeFeature(features[0], { dataProjection: EPSG_DISPLAY_PROJECTION, - featureProjectsion: EPSG_PROJECTION}); - jQuery('#id_polygon').val(String(wkt)); + featureProjection: EPSG_PROJECTION}); + jQuery(input_id).val(String(wkt)); + if(settings.edition_type == 'marker' && $('#live_latitude').length){ + coords = features[0].getGeometry().clone().transform( + EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION).getCoordinates(); + $('#live_latitude').val(coords[1]); + $('#live_longitude').val(coords[0]); + } }, activateCurrentControl: function(){ if (settings.current_control){ |
