var PROXY_HOST="http://localhost:6779/cgi-bin/proxy.cgi?url=" var map; var markers; var markerLayer; function initialize() { markers = []; mapOptions = {}; map = new OpenLayers.Map("mapPanel", mapOptions); markerLayer = new OpenLayers.Layer.Markers( "Markers" ); map.addLayer(new OpenLayers.Layer.OSM()); map.addLayer(markerLayer); map.events.register("click", map, function(e) { placeMarker(map.getLonLatFromPixel(e.xy)); }); //CENTER MAP HERE } function queryLocationInfo(lonlat, infoCallback) { var addrUrl = "http://nominatim.openstreetmap.org/reverse/?addressdetails=1&format=json"; addrUrl += "&lon=" + lonlat.lon; addrUrl += "&lat=" + lonlat.lat; $.getJSON(addrUrl, infoCallback); } function queryRoutingInfo(startPoint, endPoint) { var routeUrl = PROXY_HOST + "http://www.yournavigation.org/api/1.0/gosmore.php"; routeUrl += "?flat=" + startPoint.lat; // ATTENTION "&" or "?" it depends routeUrl += "&flon=" + startPoint.lon; routeUrl += "&tlat=" + endPoint.lat; routeUrl += "&tlon=" + endPoint.lon; routeUrl += "&v=motorcar"; routeUrl += "&fast=1"; routeUrl += "&geometry=0"; routeUrl += "&format=geojson"; $.getJSON(routeUrl, function (result) { document.getElementById('routeLength').innerHTML=result.properties.distance; document.getElementById('routeTime').innerHTML=result.properties.traveltime; }); } function placeMarker(location) { if (markers.length >= 2 && markers[0] !== null && markers[1] !== null) { for (var i = 0; i < markers.length; ++i) { markerLayer.removeMarker(markers[i]); } markers = []; } var size = new OpenLayers.Size(21,25); var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset); var marker = new OpenLayers.Marker(location, icon); markerLayer.addMarker(marker); markers.push(marker); if (markers.length === 2) { var p1 = markers[0].lonlat; p1.transform(map.getProjectionObject(), new OpenLayers.Projection("EPSG:4326")); var p2 = markers[1].lonlat; p2.transform(map.getProjectionObject(), new OpenLayers.Projection("EPSG:4326")); queryLocationInfo(markers[0].lonlat, function(response) { document.getElementById('routeStart').innerHTML=response.display_name; }); queryLocationInfo(markers[1].lonlat, function(response) document.getElementById('routeEnd').innerHTML=response.display_name; }); queryRoutingInfo(markers[0].lonlat, markers[1].lonlat); } }