summaryrefslogtreecommitdiff
path: root/static/main_map.js
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-01-11 19:02:30 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2009-01-11 19:02:30 +0000
commita4bc9f49559db59eb8ce4208f3ad49b262a5d05f (patch)
tree58299c2ed9f08faec8506e0b433ea6aacbd19298 /static/main_map.js
parent03c7e15227fb84b94d9f870aac69d7d54b61889a (diff)
downloadChimère-a4bc9f49559db59eb8ce4208f3ad49b262a5d05f.tar.bz2
Chimère-a4bc9f49559db59eb8ce4208f3ad49b262a5d05f.zip
First implementation of route management
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@10 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
Diffstat (limited to 'static/main_map.js')
-rw-r--r--static/main_map.js56
1 files changed, 44 insertions, 12 deletions
diff --git a/static/main_map.js b/static/main_map.js
index 4a9e684..3ccf2b0 100644
--- a/static/main_map.js
+++ b/static/main_map.js
@@ -44,6 +44,7 @@ var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
/* define global variable */
var markers = new Array();
var layerMarkers;
+var layerVectors;
var currentPopup;
var currentFeature;
@@ -63,8 +64,8 @@ function showPop(feature) {
currentPopup = feature.popup;
}
-/* load markers with an AJAX request */
-function loadMarkers(){
+/* load geo objects with an AJAX request */
+function loadGeoObjects(){
/* get checked categories */
inputs = window.document.forms["frm_categories"];
var categories = '';
@@ -79,28 +80,36 @@ function loadMarkers(){
}
/* 0 stand for all categories */
if (!categories) categories = '0';
- var uri = "/chimere/getMarkers/" + categories;
- OpenLayers.loadURL(uri, '', this, setMarkers);
+ var uri = "/chimere/getGeoObjects/" + categories;
+ OpenLayers.loadURL(uri, '', this, setGeoObjects);
}
-/* update the marker layers from an http response GeoJSON */
-function setMarkers(response){
+/* update the marker and vector layers from an http response GeoJSON */
+function setGeoObjects(response){
if(layerMarkers) layerMarkers.destroy();
+ if(layerVectors) layerVectors.destroy();
if (response.responseText.indexOf('no results') == -1) {
/* clean the marker layer */
if (currentPopup) {
currentPopup.hide();
hide('detail');
}
+ layerVectors = new OpenLayers.Layer.Vector("Vector Layer");
+ map.addLayer(layerVectors);
+ layerVectors.setOpacity(0.8);
layerMarkers = new OpenLayers.Layer.Markers('POIs');
map.addLayer(layerMarkers);
layerMarkers.setOpacity(0.8);
var json = new OpenLayers.Format.JSON();
- var markers_pt = json.read(response.responseText);
- /* load every marker */
- for (var i = 0; i < markers_pt.features.length; i++) {
- putMarker(markers_pt.features[i]);
+ var geo_objects = json.read(response.responseText);
+ /* load every geo object */
+ for (var i = 0; i < geo_objects.features.length; i++) {
+ var feature = geo_objects.features[i];
+ if (feature.geometry.type == 'Point') putMarker(feature);
+ if (feature.geometry.type == 'LineString') {
+ putRoute(feature);
+ }
}
/*
var geojson = new OpenLayers.Format.GeoJSON();
@@ -111,9 +120,32 @@ function setMarkers(response){
}
}
+
+/* put a route on the map */
+function putRoute(route) {
+ var polyline = route.geometry;
+ var point_array = new Array();
+ for (i=0; i<polyline.coordinates.length; i++){
+ var point = new OpenLayers.Geometry.Point(polyline.coordinates[i][0],
+ polyline.coordinates[i][1]);
+ point_array.push(point);
+ }
+ var linestring = new OpenLayers.Geometry.LineString(point_array);
+ currentFeature = new OpenLayers.Feature.Vector();
+
+ var style = OpenLayers.Util.extend({},
+ OpenLayers.Feature.Vector.style['default']);
+ style.strokeColor = route.properties.color;
+ style.strokeWidth = 3;
+ currentFeature.style = style;
+ currentFeature.geometry = linestring;
+ layerVectors.addFeatures([currentFeature]);
+}
+
+
/* put a marker on the map */
function putMarker(mark) {
- /* initialise a new feature with appropriate attribute for setting a
+ /* initialise a new marker with appropriate attribute for setting a
marker */
lat = mark.geometry.coordinates[1];
lon = mark.geometry.coordinates[0];
@@ -199,6 +231,6 @@ function init(){
/*projection: new OpenLayers.Projection('EPSG:900913'),
displayProjection: new OpenLayers.Projection('EPSG:4326')*/
map.addLayers([layerMapnik, cyclemap]);
- loadMarkers();
+ loadGeoObjects();
map.setCenter(centerLonLat, 12);
}