JS for the Index.html WebFrontend
This commit is contained in:
parent
ce73bd7501
commit
bf7bab8ea3
149
Docs/WebFrontend/Map.js
Normal file
149
Docs/WebFrontend/Map.js
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
/*
|
||||||
|
* Open Source Routing Machine (OSRM) - Web (GUI) Interface
|
||||||
|
* Copyright (C) Pascal Neis, 2011
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU AFFERO General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
* or see http://www.gnu.org/licenses/agpl.txt.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Title: Map.js
|
||||||
|
* Description: JS file to show a map, for markers, left slide div, ...
|
||||||
|
*
|
||||||
|
* @author Pascal Neis, pascal@neis-one.org
|
||||||
|
* @version 0.1 2011-05-15
|
||||||
|
*/
|
||||||
|
|
||||||
|
//======================
|
||||||
|
// OBJECTS
|
||||||
|
//Map
|
||||||
|
var map;
|
||||||
|
|
||||||
|
//Status object for what position actually a coordinate is searched
|
||||||
|
var status = ''; //possible values [start,end]
|
||||||
|
function getStatus(){ return status; }
|
||||||
|
function setStatus(stat){ status = stat; }
|
||||||
|
|
||||||
|
//Layer
|
||||||
|
var dragLayer;
|
||||||
|
var vectorLayerRoute;
|
||||||
|
var markersLayer;
|
||||||
|
|
||||||
|
//======================
|
||||||
|
// FUNCTIONS
|
||||||
|
/*
|
||||||
|
* init()-Function to create the map div
|
||||||
|
*/
|
||||||
|
function init(){
|
||||||
|
//Create Map
|
||||||
|
map = new OpenLayers.Map ("map", {
|
||||||
|
controls:[
|
||||||
|
new OpenLayers.Control.Navigation(),
|
||||||
|
new OpenLayers.Control.Permalink(),
|
||||||
|
new OpenLayers.Control.LayerSwitcher()],
|
||||||
|
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
|
||||||
|
maxResolution: 156543.0399,
|
||||||
|
numZoomLevels: 19,
|
||||||
|
units: 'm',
|
||||||
|
projection: new OpenLayers.Projection("EPSG:900913"),
|
||||||
|
displayProjection: new OpenLayers.Projection("EPSG:4326")
|
||||||
|
} );
|
||||||
|
//Add the base layers.
|
||||||
|
map.addLayer(new OpenLayers.Layer.OSM.Mapnik("Mapnik"));
|
||||||
|
map.addLayer(new OpenLayers.Layer.OSM.MapQuest("MapQuest"));
|
||||||
|
map.addLayer(new OpenLayers.Layer.OSM.Osmarender("Osmarender"));
|
||||||
|
//Add layer for the route
|
||||||
|
vectorLayerRoute = new OpenLayers.Layer.Vector("Route",{maxResolution: 156543.0339});
|
||||||
|
map.addLayer(vectorLayerRoute);
|
||||||
|
|
||||||
|
//Add Layerswitcher
|
||||||
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||||
|
|
||||||
|
//Add Panzoombar
|
||||||
|
var panZoomBar = new OpenLayers.Control.PanZoomBar({id:'panzoombar',displayClass:'olControlPanZoomBar'})
|
||||||
|
map.addControl(panZoomBar);
|
||||||
|
//Customize the position of the panzoombar
|
||||||
|
document.getElementById('panzoombar').style.left="400px";
|
||||||
|
document.getElementById('panzoombar').style.top="25px";
|
||||||
|
|
||||||
|
//Create drag vector layer
|
||||||
|
dragLayer = new OpenLayers.Layer.Vector(
|
||||||
|
"Start/End Marker",{
|
||||||
|
styleMap: new OpenLayers.StyleMap({
|
||||||
|
// Set the external graphic and background graphic images.
|
||||||
|
externalGraphic: '${icon}',
|
||||||
|
// Makes sure the background graphic is placed correctly relative
|
||||||
|
// to the external graphic.
|
||||||
|
backgroundXOffset: 0,
|
||||||
|
backgroundYOffset: -7,
|
||||||
|
|
||||||
|
// Set the z-indexes of both graphics to make sure the background
|
||||||
|
// graphics stay in the background (shadows on top of markers looks
|
||||||
|
// odd; let's not do that).
|
||||||
|
graphicZIndex: 10,
|
||||||
|
backgroundGraphicZIndex: 11,
|
||||||
|
|
||||||
|
pointRadius: 10,
|
||||||
|
graphicWidth: 22,
|
||||||
|
graphicHeight: 34
|
||||||
|
}),
|
||||||
|
rendererOptions: {yOrdering: true}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
// Add a drag feature control to move features around.
|
||||||
|
var dragFeatures = new OpenLayers.Control.DragFeature(dragLayer,
|
||||||
|
{ onDrag: function(feature, pixel){
|
||||||
|
feature.move(map.getLonLatFromPixel(pixel));
|
||||||
|
if(!ISCALCULATING){ routing(true); }},
|
||||||
|
onComplete: function(feature, pixel){
|
||||||
|
feature.move(map.getLonLatFromPixel(pixel));
|
||||||
|
if(!ISCALCULATING){ routing(false); }},
|
||||||
|
onLeave: function(f){
|
||||||
|
alert("here");
|
||||||
|
if(!ISCALCULATING){ routing(false); }}
|
||||||
|
});
|
||||||
|
map.addControl(dragFeatures);
|
||||||
|
dragFeatures.activate();
|
||||||
|
map.addLayers([dragLayer]);
|
||||||
|
|
||||||
|
//Add a marker layer
|
||||||
|
markersLayer = new OpenLayers.Layer.Markers("Markers");
|
||||||
|
map.addLayer(markersLayer);
|
||||||
|
|
||||||
|
//Add zoom event for rerouting
|
||||||
|
map.events.on({zoomend: function(e) {reroute();}});
|
||||||
|
|
||||||
|
// Set center of the map
|
||||||
|
if (!map.getCenter()){
|
||||||
|
map.setCenter(new OpenLayers.LonLat(600000, 6600000),6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Helper Functions
|
||||||
|
function checkReturn(textfieldname,e){
|
||||||
|
var evt = e || window.event;
|
||||||
|
if(!evt){ return; }
|
||||||
|
|
||||||
|
var key = 0;
|
||||||
|
if (evt.keyCode) { key = evt.keyCode; }
|
||||||
|
else if (typeof(evt.which)!= 'undefined') { key = evt.which; }
|
||||||
|
if( key == 13 && textfieldname=='start'){ setStatus('start'); geocodeAddress('start'); return; }
|
||||||
|
if( key == 13 && textfieldname=='end'){ setStatus('end'); geocodeAddress('end'); return; }
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeOpenDiv(name){
|
||||||
|
if(document.getElementById(name).style.display == 'none'){ document.getElementById(name).style.display = ''; }
|
||||||
|
else{ document.getElementById(name).style.display = 'none'; }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user