Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retina-Karten #114

Closed
christophboecker opened this issue Dec 11, 2022 · 3 comments · Fixed by #118
Closed

Retina-Karten #114

christophboecker opened this issue Dec 11, 2022 · 3 comments · Fixed by #118
Labels
enhancement New feature or request

Comments

@christophboecker
Copy link
Member

Basierent auf #110:

Grundsätzlich die automatische Auswahl der passenden Tile-URL für Retina- und Non-Retina-Dislays ermöglichen.

Leaflet liefert dazu in der URL im Falle eines Retina-Clients ein r=@2x mit. Damit der Parameter ankommt, muss die Abruf-Url um &r={r} erweitert werden.

Alle Tile-URLs, die den Parameter @2x untetstützen, könnn dann client-seitig je nach Anforderung normale oder hochauflösende Kacheln liefern. Beispiel CartoDB/OSM:

https://cartodb-basemaps-{s}.global.ssl.fastly.net/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png

Es gibt auch URL-Provider, die statt dessen die Aufösung über anders geartete Parameter anfordern. Z.B. hat HERE fix 256 oder 512 in der URL stehen. Um den Fall abzudecken könnte man mit zwei URLs arbeiten. Die Standard-URL wird bei normalen Anfragen (r=) genommen, die Retina-URL bei Anfragen mit r=@2x.

https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey=....
https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/512/png8?apiKey=....
@christophboecker christophboecker added the enhancement New feature or request label Dec 11, 2022
@christophboecker
Copy link
Member Author

christophboecker commented Dec 12, 2022

Lösung 1: alternative Retina-URL

Es gibt ein zweites Eingabefeld für eine optionale Retina-Url. Über den vom Client gelieferten Parameter r=@2x wird entschieden, welche genutzt wird. Bleibt das Feld für die Retina-Url leer, würde die Standard-Url benutzt. Falls dort {r} vorkommt, wird @2x eingesetzt.

Technisch: beim Kachelabruf prüft der Proxy, ob r == '@2x'und ob eine Retina-Url vorliegt. In dem Fall wird die Retina-Url zum Kachelabruf genutzt.

grafik

Lösung 2: Alternativer {r}-Parameter

Es bleibt bei einem URL-Feld und bei {r}als Platzhalter. Der Inhalt des Platzhalters kann im Formular flexibel vorgegeben werden, also z.B. bei den HERE-Urls 256 für Standard und 512für Retina. Bleibt der Platzhalter leer gilt wieder der Default: leer für Standardauflösung und @2x für Retina.

grafik

Technisch: Wenn angegeben werden die r-Parameter bereits beim Aufbau der Karte im Mapset mit an den Client übertragen. Bei der Anforderung einer Karte steht dann bereits - um im Beispiel zu bleiben - r=256 bzw. r=512 in der Anforderung an den Proxy. Weil: Leaflet erlaubt es, den vorgesehenen Wert (leer bzw. @2x) zu überschreiben. Damit entfällt die Fallunterscheidung im Proxy.

@bitshiftersgmbh
Copy link
Member

1 scheint mir solider. Der 2. Ansatz setzt voraus, dass der Basis-URL-Syntax in der Form parameterisierbar ist. Das muss ja aber nicht zwingend so sein bei anderen Diensten oder in der Zukunft. Mit einer 2. vollständigen URL bist du diesbezüglich safe.

@christophboecker
Copy link
Member Author

Ziemlich eindeutiges Votum! Danke.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants