Closed tbaddade closed 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
"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.
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:
Vieleicht ein Missverständnis. Eine leere Kare ohne alles orientiert sich nicht am Zool-Level, sondern am Kartenausschnitt (Bounds):
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.
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.
@tbaddade Wir können uns gerne mal per Telefon oder Teams austauschen, Thomas. Läuft es denn jetzt mit "center"?
Danke für das Angebot … Habe es jetzt zum Laufen bekommen … via YForm Value :)
@tbaddade dein Geopicker sieht nice aus
Danke, aber das ist nur ein BS input-group
. Die eigentliche Arbeit kommt von @xong und dem Autor von yform_geo_osm
.
Description / Beschreibung
https://github.com/FriendsOfREDAXO/geolocation/blob/master/lib/yform/dataset/Mapset.php#L498
Diese Datei scheint es nicht zu geben.
Eigentlich wollte ich nachsehen, was die 10 hier genau bedeutet:
Affected versions / Verwendete Versionen
REDAXO: 5.14.2 PHP: 8.1 Geolocation 2.0.0-beta2