Nominatim Suche mit OpenLayers und sprachlokalisierte Karten

Kurz zum Hergang. Zum einen hat es mich schon immer geärgert, dass es kein einfaches Beispiel gibt, wie man eine Nominatim Ortssuche in OpenLayers einbindet. Zum anderen spiele ich auch schon eine Weile mit sprachlokalisierten Karten rum. Beides steht jetzt - zumindest als Prototyp

1) Einbindung von Nominatim in eine OL Karte
Erstmal möchte ich auch hier Max (a.k.a. maxbe) danken, der das programmiert hat. Ohne ihn hätte ich das nicht hinbekommen. Ich habe nur rumgemeckert, wenn mir was nicht gepasst hat.
Die Suche ist mehrsprachig. Die Eingaben können in jeder Sprache erfolgen. Der Suchbegriff muss nur in in OSM als name(:xx) eingetragen sein. Ist halt so wie in OSM. Die Ausgabesprache kann in der index.html festgelegt werden. Sofern die gewünschte Sprache nicht vorhanden ist, wird name= ausgegeben. Die Anzeige der Resultate wurde etwas gekürzt (verglichen mit osm.org). Das ist in 99% der Fälle gut.
Die Kategorien werden in einer speziellen Datei übersetzt. Bspw gibt Nominatim Kategorien wie city, town, place_of_worship zurück. Wer sich nicht die Arbeit machen will und bei null anfangen, hier mal ein erster Entwurf.
german.osm4people.org/nominatim-i8n.csv

Die Anleitung mit einem einfache Beispiel findet sich hier
http://wiki.openstreetmap.org/wiki/User:SunCobalt/OpenLayers_Suche

Falls Bedarf besteht, könnte ich alle nötigen Files zusammen packen. Müsste out-of-the-box laufen

2 Sprachlokalisierte Karte
Für uns ist es nicht so wild. In den meisten Gegenden ausserhalb ex-Sowietunion, Arabien und Asien können wir die Karten lesen. Anderen geht es nicht so. Daher habe ich mal ein paar Karten in lokalen Sprachen erstellt. Hier ein Beispiel in kyrillisch (serbisch) inkl angepasster Nominatim Suche
http://serbia.osm4people.org/
Zum Layer Српски springen.
Wenn man bspw nach “Moskau” sucht, findet man die Stadt Moskau (1) und als zweites ein Weiler in DE. Man sieht, dass nicht alles in allen Sprachen übersetzt ist…klar, wer übersetzt schon ein Weiler in NRW.
Es ist nur Europa geladen. Es ist bis zu Zoom Level 10 vorgerendert. 11 ist noch recht langsam in Gegenden mit viel Daten. Die Tiles werden gecacht. Der nächste, der das Gebiet anschaut, bekommt die Tiles wesentlich schneller. Ab Level 12 ist es für meinen Geschmack meist akzeptabel.
Auch wenn sich jetzt viele drauf stürzen, kann es langsam werden, da ich keine Tiles a la “more osm is coming soon” nutze.
Achja, die Übersetzung der Kategorien ins Serbische ist noch fehlerhaft. Ich kann kein serbisch und warte noch auf Feedback von der lokalen Community…nur falls es jemand bemerkt

@Edwin
Du nimmst bitte http://german.osm4people.org/ und schaltest ins Layer DE-OSM. Dort findest Du alles in Deutsch - sofern in OSM eingegeben.

hi !

habe den Code mal bei mir abgelegt und den einen vorhandenen Fehler noch beseitigt aber die Suche liefert bei mir immer …

No Search Results “Lübeck”

???

Gruß Jan :slight_smile:

was passiert wenn Du http://deine.domain.de/mapquestjs.php?q=Luebeck eintippst? Das hier?

  • 10.727542874312 53.8726678070735 Verwaltungsgrenze: Schleswig-Holstein (Landmasse) Administrative: Lübeck, Ostholstein, Schleswig-Holstein (Landmasse) 10.6847384 53.8664436 Stadt: Lübeck, Schleswig-Holstein, Germany City: Lübeck, Ostholstein, Schleswig-Holstein, Germany, Europa -81.6264926892373 39.2276586850205 Verwaltungsgrenze: Lubeck, West Virginia, Vereinigte Staaten von Amerika Administrative: Lubeck, Washington, West Virginia, Vereinigte Staaten von Amerika /* end */ *

eventuell hat “Lübeck” ja auch Nick-Suche gemeint? DAS kann Nominatim noch nicht :wink:

Solange ich mich mit Computern rumschlage, hat es immer Probleme mit den kleinen ähhhs und die großen Ühhhs gegeben. Das bleibt wohl für immer so.

Gruss
Walter

Nein, Du kannst auch mit Umlauten suchen. Auch Chinesisch geht 北京
Der Link ist nur zum testen ob das php Skript geht. Vermutlich liegts an der fehlenden curl Unterstützung. Das sollte ich auf der Wiki-Seite als Vorrausetzung ergänzen

Was war der eine Fehler?

Wenn Du stattdessen das hier siehst, fehlt Dir curl:

Fatal error: Call to undefined function curl_init() in /irgend//ein/pfad/mapquestjs.php on line 71

Grüße, Max

hi !

ich hatte den Fehle - habe die html lokal ausgeführt und nicht daran gedacht das ja die php angesprochen wird und somit der webserver aktiv sein muss.

Das habe ich jetzt nachgeholt und bekomme die Meldung

Parse error: syntax error, unexpected T_VARIABLE in …\deu\mapquestjs.php on line 77

Das ist die Zeile mit

$xml_parser = xml_parser_create();

Dafür muss vermutlich erst wieder ein anderes Paket installiert werden ??

Wäre das eigentlich bei “Standard”-Webserverern (1und1) verfügbar ?

Gruß Jan :slight_smile:

ja, die beiden oben verlinkten Karten liegen bei 1und1

hast Du php5-curl installiert?

@Max
Ich hatte einen copy 'n paste Fehler drin. Habe übersehen, dass eine Zeile weitergeht (endet in nano mit $)
http://wiki.openstreetmap.org/w/index.php?title=User%3ASunCobalt%2FOpenLayers_Suche&action=historysubmit&diff=656283&oldid=656089

hab mapquestjs.php korrigiert. in Zeile 75 fehlte ein Semicolon. Daher kam der Fehler mit “Parse error: syntax error, unexpected T_VARIABLE in …\deu\mapquestjs.php on line 77”

Gruss
Walter

p.s. Das ist aber nicht der OSM-Nominatiḿ Server. Das ist doch ein N-Server bei MapQuest mit OSM-Daten, oder?

und eine vernünftige nominatim-i8n.csv zumindest en/de wäre auch nicht schlecht.

Ja. Der richtige Nominatim-Server hat recht enge Vorstellungen von bestimmungsgemässem Gebrauch, die “Du darfst nicht mehr als 1x pro Sekunde fragen”-Regel ist schon sehr knapp. Das Ding arbeitet ja praktisch als Proxy, “Du darfst…” heisst in diesem Fall “alle Deine Besucher zusammen dürfen…”.

Das hat Mapquest nicht, Daten sollten dort auch hinreichend aktuell sein und der Preis der kleinen Danksagung unterm Suchknopf ist ok, finde ich

Der Unterschied zum OSM-Nominastim wäre die URL in Zeile 72. Statt “open.mapquestapi.com/nominatim/v1/search?q=…” einfach “Nominatim Demo…” einsetzen sollte funktionieren.

Grüße, Max

Ich bau den gerade in mein PLZ-Tool ein. Da kommen nicht allzuviele Requests rein - schätzte mal 1-2 pro Tag :wink:

Was mich derzeit erschüttert, ist die Qualität der Mapquest-Suche. Einfache Städte (“Nordhorn”) oder auch etwas schwierige (“castrop-rauxel”,“bad homburg”) findet er nicht; von Strassen mit Hausnummern nicht zu reden.

Kann aber auch ein “Starter-Problem” sein, da ich das Beispiel fast 1-1 übernommen habe.

Ich werd mal nen Switch zur Auswahl der Suchmaschine einbauen; dann weiss ich wenigstens wer “spinnt”.

gruss
walter

Da sagt er bei mir “Stadt: Nordhorn, Niedersachsen, Deutschland”

  • Stadt: Castrop-Rauxel, Nordrhein-Westfalen, Deutschland
  • Autobahnkreuz: Castrop-Rauxel, Castrop-Rauxel, Stadt, Nordrhein-Westfalen, Deutschland

und bei Bad Homburg bringt er
Autobahnkreuz: Bad Homburg, Bad Homburg vor der Höhe, Hessen, Deutschland

Was an Ergebnissen kömmen müsste, kannst Du hier schauen
http://open.mapquestapi.com/nominatim/v1/

Statt des lokalen php Skripts kannst Du ja mal hilfsweise das hier einbinden.
http://german.osm4people.org/mapquestjs.php

Dein eigenes php Skript kannst Du mal testen, wenn das das hier eingibst
http://deine.domain.de/mapquestjs.php?q=Berlin

Da müsstest Du dann das sehen
13.4023051674614 52.5014783395417 Administrative: Berlin Administrative: Berlin 13.4023271 52.5015955 State: Berlin, Germany State: Berlin, Germany, Europe 13.3888548 52.5170397 City: Berlin, Berlin, Germany City: Berlin, Berlin, Stadt, Mitte, Berlin, Germany, Europe /* end */

danke,

dann muss ich wohl mal in die Details gehen.

gruss
Walter

wenn ph5-curl nicht installiert ist, sieht auf der Karte so aus, als wenn gar nichts gefunden wird

hier die Dateien direkt vom Server, wie sie eben noch liefen. Hoffe damit fehlenden Kommas durch Copy und Paste ausschliessen zu können
http://suncobalt.homeip.net:82/test/beispiel.zip

genau so müsste es dann gehen
http://suncobalt.homeip.net:82/test/beispiel1.html

sieht ja hübsch aus. nur diese meldung “no search result for…” ist ein wenig verwirrend. er findet es ja trotzdem.

gruss
walter

ohje, da habe ich die Strings für “No search results for” und “Search results for” vertauscht. Danke für den Tipp. Eine Minute bitte

sowas kann man ja eigentlich nicht übersehen. das ist das allererste was mich gestern nacht gestört hat.
ok, mach ich mich mal an meine Karte ran.
Gruss
walter

so

Download
http://suncobalt.homeip.net:82/test/beispiel.zip

Beispiel der in Download enthaltenen Dateien
http://suncobalt.homeip.net:82/test/beispiel1.html

und Wiki geändert.
http://wiki.openstreetmap.org/wiki/User:SunCobalt/OpenLayers_Suche

Danke für den Hinweis

Sag Bescheid obs bei Dir geht

wird a bissl dauern - bei mir fackelt gerade die db-platte ab :frowning: