FriendsOfREDAXO / geolocation

Tile-Proxy/Cache und Kartendarstellung mit Leaflet für REDAXO 5.13+
MIT License
26 stars 3 forks source link

Geolocation.js - Datei fehlt oder Kommentar ist falsch #128

Closed tbaddade closed 1 year ago

tbaddade commented 1 year ago

Description / Beschreibung

https://github.com/FriendsOfREDAXO/geolocation/blob/master/lib/yform/dataset/Mapset.php#L498

sammelt die Karteninhalte ein (siehe Geolocation.js -> Tools).

Diese Datei scheint es nicht zu geben.

Eigentlich wollte ich nachsehen, was die 10 hier genau bedeutet:

echo Mapset::take($mapSetId)
    ->dataset('center', [[$latitude, $longitude], 10])

Affected versions / Verwendete Versionen

REDAXO: 5.14.2 PHP: 8.1 Geolocation 2.0.0-beta2

christophboecker commented 1 year ago

Hast Du den Code für das Anzeige-Tool "center" auch eingebaut? Nur "position" (blauen Hauptmarker setzen), "marker" (Liste zusätzliche roter Marker) und "bounds" (Anzeigebereich) sind per se verfügbar.

"center" ist ein Beispiel für Custom-Tools. Der Code (man muss es ja nicht abschreiben) steht in docs/example/geolocation.js).

Kann man in eigenes JS einbauen oder in das Geolocation-JS integrieren. Dazu die Datei in das Data-Verzeichnis kopieren und einmal die Geolocation-Einstellungen speichern (löst Neuerstellung der Assets aus) oder Re-Installieren (selber Effekt).

siehe hier:


PS: Die 10 ist der Zoom-Level, auf den die Karte eingestellt werden soll.

https://github.com/FriendsOfREDAXO/geolocation/blob/master/docs/devtools.md#center

tbaddade commented 1 year ago

"center" Diese Beispiel-Tool kann anstelle des Tools "Bounds" (Festlegung eines Mindest-Anzeigebereichs) verwendet werden.

Die bounds benötige ich später auch. Dann frage ich mal ganz direkt. Wie kann ich einfach den normalen initialen Zoomwert mitgeben? Der Wert in den Einstellungen hat scheinbar keinen Einfluss.

Bildschirm­foto 2023-02-02 um 16 04 53
christophboecker commented 1 year ago

Das klappt einwandfrei. Keinen Zomlevel angeben bzw. null. Das hier ist mein Test-Code, einfach als Modul-Output angelegt. Die Variante ist mit Null, weil ich zur Verdeutlichung auch noch einen 1000m-Kringel um den Punkt zeichne.

namespace FriendsOfRedaxo\Geolocation;

use FriendsOfRedaxo\Geolocation\Calc\Box;
use FriendsOfRedaxo\Geolocation\Calc\Point;

$konstanz = Point::byLatLng([47.658968, 9.178456]);
$kressbronn = Point::byLatLng([47.586204, 9.560653]);
$friedrichshafen = Point::byLatLng([47.651695, 9.485064]);
$romanshorn = Point::byLatLng([47.568462, 9.366521]);

$bounds = Box::factory([$romanshorn, $friedrichshafen, $kressbronn]);
$bounds = $bounds->resizeBy(1.3);

// Benutze Zoom-Level 10
$dataset = [
    $konstanz->latLng(),
    10,
    1000,
];
$mapset = Mapset::take()
    ->dataset('center', $dataset);

dump(get_defined_vars());
echo $mapset->parse();

// Benutze den Default-Zoom-level (hier: 15)
$dataset = [
    $konstanz->latLng(),
    null,
    1000,
];

$mapset = Mapset::take()
    ->dataset('center', $dataset);

dump(get_defined_vars());
echo $mapset->parse();

Das ergibt dann im Backend:

grafik grafik
christophboecker commented 1 year ago

Vieleicht ein Missverständnis. Eine leere Kare ohne alles orientiert sich nicht am Zool-Level, sondern am Kartenausschnitt (Bounds):

grafik

Der Zoom-Level kommt in den Einstellungen nur vor, damit man ihn in eigenen Custom-Tools, so man ihn dort als Default/Fallback benötigt, verfügbar hat.

tbaddade commented 1 year ago

Nur für dich zum Verständnis weshalb ich scheiterte

Ich hatte folgendes:

echo Mapset::take($mapSetId)
    ->attributes('id', $this->getHTMLId('map'))
    ->attributes('style', 'position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;')
    ->parse();

Da in den Einstellungen der Zoomwert Pflicht ist, ging ich davon aus, dass dieser auch direkt weitergeben wird und vom Mapset berücksichtigt wird.

Da dies nicht so funktionierte, wollte ich das via ->dataset('center'...) direkt übergeben.

Hier im AddOn steckt so viel Arbeit drin und ich würde es echt gern nutzen. Aber mir fällt es schwer hier durchzusteigen. Vielleicht liegt es daran, dass das Addon hier einen anderen Weg geht, als bisherige AddOns. Beispiel JavaScript Dateien im Install-Ordner.

christophboecker commented 1 year ago

@tbaddade Wir können uns gerne mal per Telefon oder Teams austauschen, Thomas. Läuft es denn jetzt mit "center"?

tbaddade commented 1 year ago

Danke für das Angebot … Habe es jetzt zum Laufen bekommen … via YForm Value :)

Bildschirm­foto 2023-02-03 um 10 30 42
skerbis commented 1 year ago

@tbaddade dein Geopicker sieht nice aus

tbaddade commented 1 year ago

Danke, aber das ist nur ein BS input-group. Die eigentliche Arbeit kommt von @xong und dem Autor von yform_geo_osm.