diff options
author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-01-11 19:02:30 +0000 |
---|---|---|
committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2009-01-11 19:02:30 +0000 |
commit | a4bc9f49559db59eb8ce4208f3ad49b262a5d05f (patch) | |
tree | 58299c2ed9f08faec8506e0b433ea6aacbd19298 /static/main_map.js | |
parent | 03c7e15227fb84b94d9f870aac69d7d54b61889a (diff) | |
download | Chimè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.js | 56 |
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); } |