Moin,
die searchbox.js ist doch weiter angewachsen (in den Zeilenmengen) sowie die nominatim_translation_de.js.
Rein theoretisch könnte man noch die blauen Felder löschen:
//------------------------------------------------------------------------------
// $Id: nominatim_translation_de.js,v 1.7 2013/01/16 17:21:53 wolf Exp $
//------------------------------------------------------------------------------
// Deutsche Uebersetzung der von Nominatim gelieferten class und type Werte.
// Schamlos gestohlen von:
// http://wiki.openstreetmap.org/wiki/User:SunCobalt/OpenLayers_Suche
//------------------------------------------------------------------------------
if (!OpenLayers.NominatimTranslation) { OpenLayers.NominatimTranslation = {}; }
OpenLayers.NominatimTranslation.de = {
'aerialway.cable_car': 'Seilbahn',
'aerialway.gondola': 'Gondelbahn',
'aerialway.goods': 'Materialseilbahn',
'aerialway.station': 'Seilbahnstation',
'aeroway.aerodrome': 'Flughafen',
'aeroway.runway': 'Start-/Landebahn',
'amenity.arts_centre': 'Kunstzentrum',
'amenity.atm': 'Geldautomat',
'amenity.bank': 'Bank (Geldinstitut)',
'amenity.bar': 'Bar',
'amenity.bbq': 'Grillplatz',
'amenity.bench': 'Bank (Sitzgelegenheit)',
'amenity.biergarten': 'Biergarten',
'amenity.brothel': 'Bordell',
'amenity.cafe': 'Cafe',
'amenity.car_rental': 'Autovermietung',
'amenity.cinema': 'Kino',
'amenity.college': 'Hochschule',
'amenity.community_centre': 'B'+String.fromCharCode(252)+'rgerzentrum',
'amenity.courthouse': 'Gericht',
'amenity.diving:center': 'Tauchzentrum',
'amenity.drinking_water': 'Trinkwasser',
'amenity.embassy': 'Botschaft',
'amenity.fast_food': 'Fast-Food',
'amenity.ferry_terminal': 'F'+String.fromCharCode(228)+'hrterminal',
'amenity.fire_station': 'Feuerwache',
'amenity.fuel': 'Tankstelle',
'amenity.grave_yard': 'Friedhof',
'amenity.hospital': 'Krankenhaus',
'amenity.hunting_stand': 'Hochsitz',
'amenity.kindergarten': 'Kindergarten',
'amenity.library': 'Bibliothek',
'amenity.nightclub': 'Nachtclub',
'amenity.parking': 'Parkplatz',
'amenity.pharmacy': 'Apotheke',
'amenity.place_of_worship': 'Gotteshaus',
'amenity.police': 'Polizei',
'amenity.post_office': 'Postamt',
'amenity.prison': 'Gef'+String.fromCharCode(228)+'ngnis',
'amenity.pub': 'Kneipe',
'amenity.public_building': String.fromCharCode(246)+'ffentl. Geb'+String.fromCharCode(228)+'ude',
'amenity.recycling': 'Recycling',
'amenity.restaurant': 'Restaurant',
'amenity.school': 'Schule',
'amenity.shelter': 'Unterstand',
'amenity.social_centre': 'Soziale Einrichtung',
'amenity.social_facility': 'Soziale Einrichtung',
'amenity.swimming_pool': 'Schwimmbad',
'amenity.taxi': 'Taxi',
'amenity.theatre': 'Theater',
'amenity.townhall': 'Rathaus',
'amenity.university': 'Universit'+String.fromCharCode(228)+'t',
'barrier.city_wall': 'Stadtmauer',
'barrier.toll_booth': 'Mautstelle',
'boundary.administrative': 'Verwaltungsgrenze',
'boundary.national_park': 'Nationalparksgrenze',
'bridge.yes': 'Br'+String.fromCharCode(252)+'cke',
'building.yes': 'Geb'+String.fromCharCode(228)+'ude',
'highway.bridleway': 'Reitweg',
'highway.bus_station': 'Busbahnhof',
'highway.bus_stop': 'Bushaltestelle',
'highway.crossing': 'Kreuzung',
'highway.cycleway': 'Radweg',
'highway.footway': 'Fu'+String.fromCharCode(223)+'weg',
'highway.ladder': 'Leiter',
'highway.living_street': 'Stra'+String.fromCharCode(223)+'e',
'highway.motorway': 'Autobahn',
'highway.motorway_junction': 'Autobahnkreuz',
'highway.motorway_link': 'Autobahnauffahrt',
'highway.path': 'Pfad',
'highway.pedestrian': 'Fu'+String.fromCharCode(223)+'g'+String.fromCharCode(228)+'ngerzone',
'highway.platform': 'Bahnsteig',
'highway.primary': 'Stra'+String.fromCharCode(223)+'e',
'highway.primary_link': 'Stra'+String.fromCharCode(223)+'e',
'highway.raceway': 'Rennstrecke(Raceway)',
'highway.residential': 'Wohnstra'+String.fromCharCode(223)+'e', // Konflikt zu Wohngebiet
'highway.road': 'Stra'+String.fromCharCode(223)+'e',
'highway.secondary': 'Stra'+String.fromCharCode(223)+'e',
'highway.secondary_link': 'Stra'+String.fromCharCode(223)+'e',
'highway.service': 'Zufahrt',
'highway.steps': 'Treppe',
'highway.tertiary': 'Stra'+String.fromCharCode(223)+'e',
'highway.tertiary_link': 'Stra'+String.fromCharCode(223)+'e',
'highway.track': 'Feldweg',
'highway.trunk': 'Schnellstra'+String.fromCharCode(223)+'e',
'highway.unclassified': 'Stra'+String.fromCharCode(223)+'e',
'historic.archaeolocical_site': 'Arch'+String.fromCharCode(228)+'ologische St'+String.fromCharCode(228)+'tte',
'historic.castle': 'Burg',
'historic.heritage': 'Kulturerbe',
'historic.memorial': 'Gedenkst'+String.fromCharCode(228)+'tte',
'historic.monument': 'Denkmal',
'historic.tower': 'Historischer Turm',
'landuse.allotments': 'Kleing'+String.fromCharCode(228)+'rten',
'landuse.basin': 'Wasserbasin',
'landuse.brownfield': 'Brachland',
'landuse.cemetery': 'Friedhof',
'landuse.commercial': 'Gewerbegebiet',
'landuse.conservation': 'Schutzgebiet',
'landuse.construction': 'Baugebiet',
'landuse.farm': 'Bauernhof (Farm)',
'landuse.farmyard': 'Bauernhof (Farmyard)',
'landuse.forest': 'Wald',
'landuse.grass': 'Gras',
'landuse.greenfield': 'Bauerwartungsland',
'landuse.industrial': 'Industriegebiet',
'landuse.landfill': 'Deponie',
'landuse.meadow': 'Weide',
'landuse.recreation_ground': 'Freizeitgel'+String.fromCharCode(228)+'nde',
'landuse.residential': 'Wohngebiet',
'landuse.retail': 'Einkaufsgegend',
'landuse.village_green': 'Dorfanger',
'leisure.club': 'Klub',
'leisure.garden': 'Garten',
'leisure.golf_course': 'Golfplatz',
'leisure.ice_rink': 'Eisbahn',
'leisure.marina': 'Yachthafen',
'leisure.military': 'Militärgel'+String.fromCharCode(228)+'nde',
'leisure.miniature_golf': 'Mini-Golf',
'leisure.nature_reserve': 'Naturschutzgebiet',
'leisure.park': 'Park',
'leisure.pitch': 'Spielfeld',
'leisure.playground': 'Spielplatz',
'leisure.quarry': 'Steinbruch',
'leisure.sports_centre': 'Sportzentrum',
'leisure.stadium': 'Stadion',
'leisure.swimming_pool': 'Swimmingpool',
'leisure.theme_park': 'Freizeitpark',
'leisure.track': 'Rennstrecke(Track)',
'leisure.water_park': 'Wasserpark',
'man_made.cairn': 'Steinmanderl',
'man_made.pole': 'Stange',
'natural.cave_entrance': 'H'+String.fromCharCode(246)+'hleneingang',
'natural.cliff': 'Felswand',
'natural.glacier': 'Gletscher',
'natural.grassland': 'Steppe',
'natural.heath': 'Heide',
'natural.peak': 'Gipfel',
'natural.scree': 'Ger'+String.fromCharCode(246)+'ll',
'natural.scrub': 'Gestr'+String.fromCharCode(252)+'pp',
'natural.spring': 'Quelle',
'natural.water': 'Gew'+String.fromCharCode(228)+'sser',
'natural.wetland': 'Feuchtgebiet',
'natural.wood': 'Naturwald',
'place.city': 'Stadt',
'place.continent': 'Kontinent',
'place.country': 'Staat',
'place.county': 'Kreis',
'place.hamlet': 'Weiler',
'place.house': 'Haus',
'place.island': 'Insel',
'place.islet': 'Insel',
'place.isolated_dwelling': 'Weiler',
'place.locality': 'Ort',
'place.mountain_pass': 'Gebirgspass',
'place.neighbourhood': 'Nachbarschaft',
'place.postcode': 'Postleitzahlbereich',
'place.region': 'Region',
'place.state': 'Staat',
'place.suburb': 'Stadtteil',
'place.town': 'Stadt',
'place.village': 'Dorf',
'railway.halt': 'Bahnhof',
'railway.station': 'Bahnhof',
'railway.tram_stop': 'Stra'+String.fromCharCode(223)+'enbahnhaltestelle',
'shop.bakery': 'B'+String.fromCharCode(228)+'ckerei',
'shop.beauty': 'Kosmetiksalon',
'shop.beverages': 'Getr'+String.fromCharCode(228)+'nkemarkt',
'shop.books': 'Buchhandlung',
'shop.boutique': 'Boutique',
'shop.butcher': 'Fleischer',
'shop.car': 'Autohaus',
'shop.car_repair': 'Autowerkstatt',
'shop.chemist': 'Drogerie',
'shop.clothes': 'Bekleidungsgesch'+String.fromCharCode(228)+'ft',
'shop.computer': 'Computer-Laden',
'shop.confectionery': 'S'+String.fromCharCode(252)+String.fromCharCode(223)+'warenh'+String.fromCharCode(228)+'ndler',
'shop.convenience': 'Tante-Emma-Laden',
'shop.department_store': 'Kaufhaus',
'shop.doityourself': 'Baumarkt',
'shop.dry_cleaning': 'Reinigung',
'shop.electronics': 'Elektroladen',
'shop.florist': 'Blumenladen',
'shop.garden_centre': 'Garten-Center',
'shop.greengrocer': 'Gem'+String.fromCharCode(252)+'se-H'+String.fromCharCode(228)+'ndler',
'shop.hairdresser': 'Friseur',
'shop.ice_cream': 'Eis-Cafe',
'shop.jewelry': 'Juwelier',
'shop.kiosk': 'Kiosk',
'shop.laundry': 'Reinigung',
'shop.mall': 'Einkaufszentrum',
'shop.marketplace': 'Markt',
'shop.mobile_phone': 'Handy-Shop',
'shop.newsagent': 'Zeitungsh'+String.fromCharCode(228)+'ndler',
'shop.organic': 'Bio-Laden',
'shop.pet': 'Zoohandlung',
'shop.retail': 'Einzelhandel',
'shop.shoes': 'Schuhladen',
'shop.stationery': 'Schreibwarenladen',
'shop.supermarket': 'Supermarkt',
'shop.tobacco': 'Tabakladen',
'shop.toys': 'Spielzeugladen',
'shop.yes': 'Gesch'+String.fromCharCode(228)+'ft',
'tourism.alpine_hut': 'Bergh'+String.fromCharCode(252)+'tte',
'tourism.artwork': 'Kunstwerk',
'tourism.attraction': 'Attraktion',
'tourism.basic_hut': 'Biwakh'+String.fromCharCode(252)+'tte',
'tourism.camp_site': 'Campingplatz',
'tourism.guest_house': 'Pension',
'tourism.hotel': 'Hotel',
'tourism.information': 'Information',
'tourism.motel': 'Motel',
'tourism.museum': 'Museum',
'tourism.picnic_site': 'Piknikplatz',
'tourism.viewpoint': 'Aussichtsturm',
'tourism.zoo': 'Zoo',
'tunnel.yes': 'Tunnel',
'waterway.canal': 'Kanal',
'waterway.dam': 'Damm',
'waterway.river': 'Fluss',
'waterway.riverbank': 'Flussfl'+String.fromCharCode(228)+'che',
'waterway.stream': 'Bach',
'waterway.waterfall': 'Wasserfall'
};
//------------------------------------------------------------------------------
// $Id: nominatim_translation_de.js,v 1.7 2013/01/16 17:21:53 wolf Exp $
//------------------------------------------------------------------------------
bzw. :
//------------------------------------------------------------------------------
// $Id: searchbox.js,v 1.12 2013/01/16 19:14:53 wolf Exp wolf $
//------------------------------------------------------------------------------
// Erklaerung: http://www.netzwolf.info/kartografie/openlayers/search.htm
//------------------------------------------------------------------------------
// Fragen, Wuensche, Bedenken, Anregungen?
// <openlayers(%40)netzwolf.info>
//------------------------------------------------------------------------------
OpenLayers.Control.SearchBox=OpenLayers.Class(OpenLayers.Control, {
resultMinZoom: 12,
lang: 'de',
baseUrl: 'http://nominatim.openstreetmap.org/search?' +
'format=json&json_callback={callback}&addressdetails=0&q={query}',
destroy:function() {
if (this.input) { stopObservingElement(this.input); }
this.form = null;
this.input = null;
this.resultDiv = null;
OpenLayers.Control.prototype.destroy.apply(this,arguments);
},
draw:function(px) {
OpenLayers.Control.prototype.draw.apply(this,arguments);
this.input= document.createElement ('input');
this.input.setAttribute('type', 'text');
this.input.setAttribute('name', 'q');
this.input.control=this;
this.form=document.createElement ('form');
this.form.style.display='inline';
this.form.appendChild(this.input);
this.form.control=this;
this.form.onsubmit=this.formOnSubmit;
this.resultDiv=document.createElement ('div');
this.div.appendChild(this.form);
this.div.appendChild(this.resultDiv);
OpenLayers.Event.observe(this.input, 'click', this.inputClickEvent);
return this.div;
},
inputClickEvent: function(evt) {
evt.target.value='';
evt.target.focus();
evt.target.control.cancelSearch();
},
formOnSubmit: function() {
this.control.startSearch(this.elements.q.value);
return false;
},
currentRequest: null,
startSearch: function (q) {
this.cancelSearch();
q = OpenLayers.String.trim(q);
if (q==='') { return false; }
this.resultDiv.className='busy';
this.jsonpRequest (
this.baseUrl.replace(/{query}/, encodeURIComponent(q)),
this,
this.success,
this.failure,
{timeout: 5000});
return false;
},
cancelSearch: function () {
if (this.currentRequest) { this.currentRequest.cancel(); }
this.currentRequest = null;
this.removeResult();
},
success: function (result) {
this.currentRequest = null;
this.removeResult();
this.resultDiv.className='success';
this.formatResult(result);
},
failure: function (message) {
this.currentRequest = null;
this.removeResult();
this.resultDiv.className='failure';
this.resultDiv.appendChild (document.createTextNode (message));
},
formatResult: function(result) {
for (var i in result) {
var element=this.formatResultEntry(data=result[i]);
element.onclick=this.onResultEntryClick;
element.className='entry';
element.control=this;
element.data=data;
this.resultDiv.appendChild(element);
}
if (!result.length) {
this.resultDiv.className='success empty';
this.resultDiv.appendChild (document.createTextNode ('Kein Treffer.'));
}
},
formatResultEntry: function(data) {
var div = document.createElement ('div');
div.setAttribute('title', data.display_name + ' [' + data['class'] + ', ' + data.type + ']');
div.appendChild (document.createTextNode (
data.display_name.split(', ').slice(0,2).join(', ') +
' [' + this.translate(data['class'], data.type) + ']'));
return div;
},
translate: function (clasz, type) {
var dict = OpenLayers.NominatimTranslation && OpenLayers.NominatimTranslation[this.lang];
var trans = dict && dict[clasz+'.'+type];
if (trans) { return trans; }
return clasz+'='+type;
},
onResultEntryClick: function() {
var control = this.control;
control.removeResult();
var lonlat = new OpenLayers.LonLat(this.data.lon,this.data.lat).
transform(new OpenLayers.Projection("EPSG:4326"), control.map.getProjectionObject());
if (control.map.getZoom()<control.resultMinZoom) {
control.map.moveTo (lonlat, control.resultMinZoom);
} else {
control.map.panTo (lonlat);
}
},
removeResult: function() {
while (this.resultDiv.firstChild) {
this.resultDiv.removeChild(this.resultDiv.firstChild);
}
this.resultDiv.className='';
},
jsonpRequest: function (url, scope, success, failure, options) {
options=options||{};
var id = 'jsonp' + new Date().getTime();
url = url.replace(/{callback}/, 'window.' + id + '.callback');
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', url);
var request = {
id: id,
scope: scope,
success: success,
failure: failure,
callback: function (data) {
this.cancel();
this.success.apply(this.scope, [data]);
},
timeout: function () {
this.cancel();
this.failure.apply(this.scope, ['timeout']);
},
cancel: function() {
window.clearTimeout(this.timer);
if(this.scriptElement.parentElement) {
this.scriptElement.parentElement.removeChild(this.scriptElement);
}
delete window[this.id];
},
scriptElement: scriptElement
};
request.timer = window.setTimeout (function(){request.timeout();},
options.timeout || 5000);
window[id] = request;
document.getElementsByTagName('head')[0].appendChild(scriptElement);
return request;
},
CLASS_NAME:'OpenLayers.Control.SearchBox'
});
//--------------------------------------------------------------------------------
// $Id: searchbox.js,v 1.12 2013/01/16 19:14:53 wolf Exp wolf $
//--------------------------------------------------------------------------------
Dadurch käme man nur bei der letzten Datei auf 162 Zeilen…,bzw. auf 5,693 Bytes.
Gruß
Thal