mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
fix(maps): sag bei jedem Vorschlag, welcher Index geantwortet hat
Seit die Tipp-Suche beide Schichten fragt, ist ihre Liste gemischt — die Antwort nennt aber weiterhin EINE Quelle fuer die ganze Liste, und die heisst 'trek-places'. Der Client beschriftet damit jede Zeile, auch die aus OpenStreetMap. Wer tippt, liest also acht Mal "TREK" und schliesst daraus, die OSM-Schicht antworte gar nicht. Sie antwortet, sie steht nur unter falschem Namen da. Auf der Suchstrecke daneben stimmt es laengst: dort traegt jeder Ort sein eigenes `source`, und genau deshalb liest sich diese Liste richtig. Also traegt es jetzt auch die Zeile. Das Feld ist optional, weil Google und der Nominatim-Rueckfall je aus einer Quelle antworten; eine Zeile ohne eigene Angabe faellt weiter auf den Namen der Liste zurueck. Dazu die Koordinaten, die der Vorschlag ohnehin schon kennt. Bisher wurden sie weggeworfen, und wenn der Details-Aufruf nicht antwortete — Kill-Switch, ein ueberlasteter Overpass-Spiegel, irgendein Fehler oben — baute der Client eine Textsuche aus Name und zweiter Zeile. Bei einer OSM-Zeile ist die zweite Zeile aber keine Adresse, sondern der ortsuebliche Name: gesucht wurde dann nach "Tokio Hauptbahnhof, 東京駅丸の内駅舎", und dessen erstes Ergebnis wurde kommentarlos als der Ort genommen, den der Nutzer angeklickt hatte. Jetzt nimmt der Rueckfall den Punkt, den die Zeile mitbringt. Und das Abzeichen gibt es endlich auch mobil. Die Marke und ihre Tabelle liegen dafuer in client/src/utils/placeSource.ts, weil beide Oberflaechen dieselben Listen zeigen und ein Zeichen, das nur auf einer davon steht, schlimmer ist als keines. Was hier NICHT drin ist, obwohl es dazugehoert: dass der richtige Bahnhof in der Liste steht. Das liegt am Dienst, nicht an TREK, und ist dort gemessen und behoben — Rangfolge nach Art des Ortes plus die Verkehrsknoten, die der OSM-Schicht ganz fehlten.
This commit is contained in:
@@ -68,6 +68,26 @@ export const mapsAutocompleteSuggestionSchema = z.object({
|
||||
placeId: z.string(),
|
||||
mainText: z.string(),
|
||||
secondaryText: z.string(),
|
||||
/**
|
||||
* Which index this one row came from, when the answer is more than one index
|
||||
* interleaved. The list-level `source` cannot say it: the keystroke path asks
|
||||
* the TREK index and the OpenStreetMap layer together, so a single name above
|
||||
* the list marks half the rows wrong.
|
||||
*
|
||||
* Optional because Google and the Nominatim fallback each answer from one
|
||||
* place, and a row that names no source falls back to the list's.
|
||||
*/
|
||||
source: z.string().optional(),
|
||||
/**
|
||||
* Where the place is, when the index that answered already said so.
|
||||
*
|
||||
* The OpenStreetMap layer returns coordinates with every row, and throwing
|
||||
* them away here cost the client a second round trip on every pick — and,
|
||||
* when that round trip failed, a text search built out of a name and its
|
||||
* local spelling, which is not a query anybody would type.
|
||||
*/
|
||||
lat: z.number().optional(),
|
||||
lng: z.number().optional(),
|
||||
});
|
||||
export const mapsAutocompleteResultSchema = z.object({
|
||||
suggestions: z.array(mapsAutocompleteSuggestionSchema),
|
||||
|
||||
Reference in New Issue
Block a user