new import
This commit is contained in:
parent
db9b65d7ed
commit
1ff580d9eb
152
Docs/WebFrontend/Geocode.js
Normal file
152
Docs/WebFrontend/Geocode.js
Normal file
@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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: Geocode.js
|
||||
* Description: JS file for geocoding
|
||||
*
|
||||
* @author Pascal Neis, pascal@neis-one.org
|
||||
* @version 0.1 2011-05-15
|
||||
*/
|
||||
|
||||
//======================
|
||||
// OBJECTS
|
||||
var HOST_GEOCODE_URL = 'http://open.mapquestapi.com';
|
||||
var GEOCODE_POST = HOST_GEOCODE_URL + '/nominatim/v1/search?format=json&json_callback=showResultsGeocode';
|
||||
var searchType = 'search';
|
||||
|
||||
var isStartPointSet = false;
|
||||
var isEndPointSet = false;
|
||||
|
||||
//======================
|
||||
// FUNCTIONS
|
||||
/*
|
||||
* geocodeAddress()-Function to read out textfield and send request to a OSM nominatim geocoder
|
||||
*/
|
||||
function geocodeAddress(tf){
|
||||
var freeform;
|
||||
|
||||
if(tf == 'start'){
|
||||
freeform = document.getElementById('tfStartSearch').value;
|
||||
}
|
||||
if(tf == 'end'){
|
||||
freeform = document.getElementById('tfEndSearch').value;
|
||||
}
|
||||
|
||||
document.getElementById('information').style.visibility = 'visible';
|
||||
document.getElementById('information').innerHTML = '<p class="infoHL">One moment please ...</p>';
|
||||
|
||||
|
||||
var newURL = GEOCODE_POST + "&q="+freeform;
|
||||
var script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = newURL;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
|
||||
/*
|
||||
* showResultsGeocode()-Function to show the geocode result in a div
|
||||
*/
|
||||
function showResultsGeocode(response) {
|
||||
var html = '';
|
||||
var lonlat = '';
|
||||
|
||||
if(response){
|
||||
html += '<p class="infoHL">Search Results:</p>';
|
||||
html += '<table>'
|
||||
var markername;
|
||||
if(getStatus()=='start'){
|
||||
markername = 'start'; isStartPointSet = true;
|
||||
}
|
||||
else if(getStatus()=='end'){
|
||||
markername = 'end'; isEndPointSet = true;
|
||||
}
|
||||
|
||||
for(var i=0; i < response.length; i++){
|
||||
var result = response[i]; var resultNum = i+1;
|
||||
//odd or even ?
|
||||
var rowstyle='geocodeResultOdd';
|
||||
if(i%2==0){ rowstyle='geocodeResultEven'; }
|
||||
|
||||
html += '<tr class="'+rowstyle+'">';
|
||||
html += '<td align="right" valign="top"><span class="routeSummarybold">'+resultNum+'</span></td>';
|
||||
html += '<td class="'+rowstyle+'">';
|
||||
if(result.display_name){
|
||||
var new_display_name = result.display_name;//.replace(/,/g, ",<br />")
|
||||
html += '<a href="#" onclick="javascript:markerzoom(\''+markername+'\', new OpenLayers.LonLat('+result.lon+','+result.lat+'));">'+new_display_name.trim()+'</a>';
|
||||
}
|
||||
html += "</td></tr>";
|
||||
|
||||
//alert(result.lat + ", " + result.lon);
|
||||
if(lonlat == ''){
|
||||
lonlat = new OpenLayers.LonLat(result.lon,result.lat);
|
||||
}
|
||||
}
|
||||
html += '</table>';
|
||||
|
||||
markerzoom(markername, lonlat);
|
||||
}
|
||||
|
||||
|
||||
switch (searchType) {
|
||||
case "search":
|
||||
document.getElementById('information').style.display = "";
|
||||
document.getElementById('information').innerHTML = html;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* markerzoom()-Function to set a marker on the map
|
||||
*/
|
||||
function markerzoom(markername,lonlat){
|
||||
lonlat.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
|
||||
for(var i= 0; i<dragLayer.features.length; i++){
|
||||
if(dragLayer.features[i].name == markername){ dragLayer.removeFeatures([dragLayer.features[i]]); }
|
||||
}
|
||||
var point = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat));
|
||||
point.attributes = { icon: "img/start.png" };
|
||||
|
||||
if(markername == 'start'){
|
||||
point.attributes = { icon: "img/start.png" };
|
||||
}
|
||||
else if(markername == 'end'){
|
||||
point.attributes = { icon: "img/end.png" };
|
||||
}
|
||||
|
||||
point.name = markername;
|
||||
dragLayer.addFeatures([point]);
|
||||
|
||||
//Hack - FIXME !
|
||||
lonlat.lon -= 500;
|
||||
//Set Center
|
||||
map.setCenter(lonlat, 15);
|
||||
}
|
||||
|
||||
/*
|
||||
* getMarkerByName()-Function to return the marker-object by a name
|
||||
*/
|
||||
function getMarkerByName(markerName){
|
||||
for(var i= 0; i<dragLayer.features.length; i++){
|
||||
if(dragLayer.features[i].name == markerName){
|
||||
return dragLayer.features[i];
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user