diff options
Diffstat (limited to 'chimere/static')
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 94 |
1 files changed, 71 insertions, 23 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index 9927f9b..a94670c 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -16,6 +16,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. See the file COPYING for details. */ +var extra_url; + function transformExtent(extent) { return ol.proj.transformExtent( extent, EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION); @@ -99,7 +101,7 @@ function transform(obj) { itinerary_step_number:0, // current step number icon_offset: [0, 0], edition: false, // edition mode - edition_type_is_route: false, // route or POI edition + edition_type: 'marker', // marker, route or polygon edition //default_icon: new OpenLayers.Icon( // 'http://www.openlayers.org/dev/img/marker-green.png', // new OpenLayers.Size(21, 25), @@ -156,7 +158,7 @@ function transform(obj) { new OpenLayers.Pixel(0, -32)); } */ - if (defaults.map_layers == null || defaults.map_layers == []){ + if (defaults.map_layers == null || ! defaults.map_layers.length){ defaults.map_layers = [ new ol.layer.Tile({ style: 'Road', @@ -352,21 +354,23 @@ function transform(obj) { } ); settings.current_feature = feature; - if (feature) { - $(settings.popup_item).popover('destroy'); - var coords = feature.getGeometry().getCoordinates(); - settings.popup.setPosition(coords); - settings.popup.setOffset([feature.get('popup_offset_x'), - -feature.get('popup_offset_y')]); - $(settings.popup_item).popover({ - 'placement': 'top', - 'html': true, - 'content': feature.get('name') - }); - $(settings.popup_item).popover('show'); - methods.display_feature_detail(feature.get('pk')); - } else { - $(settings.popup_item).popover('destroy'); + if (!settings.edition){ + if (feature) { + $(settings.popup_item).popover('destroy'); + var coords = feature.getGeometry().getCoordinates(); + settings.popup.setPosition(coords); + settings.popup.setOffset([feature.get('popup_offset_x'), + -feature.get('popup_offset_y')]); + $(settings.popup_item).popover({ + 'placement': 'top', + 'html': true, + 'content': feature.get('name') + }); + $(settings.popup_item).popover('show'); + methods.display_feature_detail(feature.get('pk')); + } else { + $(settings.popup_item).popover('destroy'); + } } }); @@ -383,6 +387,39 @@ function transform(obj) { /* Vectors layer */ settings.layerVectors = new ol.layer.Vector(); settings.map.addLayer(settings.layerVectors); + if (settings.edition && (settings.edition_type == 'polygon' + || settings.edition_type == 'route')){ + settings.editionSource = new ol.source.Vector({wrapX: false}); + settings.editionVector = new ol.layer.Vector({ + source: settings.editionSource, + style: new ol.style.Style({ + fill: new ol.style.Fill({ + color: 'rgba(180, 180, 180, 0.3)' + }), + stroke: new ol.style.Stroke({ + color: '#ffcc33', + width: 2 + }), + image: new ol.style.Circle({ + radius: 7, + fill: new ol.style.Fill({ + color: '#ffcc33' + }) + }) + }) + }); + + settings.map.addLayer(settings.editionVector); + + var edition_type; + if (settings.edition_type == 'route') edition_type = 'LineString'; + if (settings.edition_type == 'polygon') edition_type = 'Polygon'; + + settings.draw = new ol.interaction.Draw({ + source: settings.editionSource, + type: (edition_type), + }); + } // OL3-deprecated settings.layerVectors.setOpacity(0.8); /* OL3-deprecated-routing if (settings.edition_type_is_route){ @@ -532,10 +569,12 @@ function transform(obj) { // methods.activateContextMenu() } else { /// OL3-TODO - if (!settings.edition_type_is_route){ - methods.activateMarkerEdit(); - } else { + if (settings.edition_type == 'route'){ methods.activateRouteEdit(); + } else if (settings.edition_type == 'polygon'){ + methods.activatePolygonEdit(); + } else { + methods.activateMarkerEdit(); } } return; @@ -625,7 +664,13 @@ function transform(obj) { methods.displayMapMenu); }, + activatePolygonEdit: function(){ + // TODO OL3 + return; + }, activateRouteEdit: function(){ + // TODO OL3 + return; settings.edition_type_is_route = true; methods.cleanMarker(); settings.map.events.unregister('click', settings.map, @@ -783,9 +828,6 @@ function transform(obj) { }, error: function (data, textStatus, errorThrown) { settings.markers.clear(); - alert(data); - alert(textStatus); - alert(errorThrown); /// OL3-TODO //settings.layerVectors.removeAllFeatures(); //if (settings.enable_clustering){ @@ -989,6 +1031,12 @@ function transform(obj) { } } }, + activateDraw: function (){ + settings.map.addInteraction(settings.draw); + }, + deactivateDraw: function (){ + settings.map.removeInteraction(settings.draw); + }, /* * Put a marker on the map */ |
