Coder Social home page Coder Social logo

friendsofredaxo / yform_geo_osm Goto Github PK

View Code? Open in Web Editor NEW
27.0 4.0 2.0 1.13 MB

YForm-Erweiterung: Einbindung einer Geocoding-Funktion basierend auf Openstreetmaps

License: MIT License

JavaScript 96.20% CSS 1.67% PHP 2.13%
redaxo yform redaxo-addon

yform_geo_osm's Introduction

YForm Erweiterung: Geo (OSM)

Screenshot

  • YForm Erweiterung für die Einbindung einer Geocoding-Funktion basierend auf Openstreetmaps.
  • Anpassung der Geo-Daten über Map-Marker möglich
  • Openstreetmaps (Karte), optional Mapbox (Karte + Satellit)
  • PHP Klasse "geo_search" für eine postleitzahlbasierte Umkreissuche

Installation

  • Paket herunterladen oder über den Installer installieren

Beispielmodul (Ausgabe) YForm Frontend

<?php

	rex_extension::register('OUTPUT_FILTER', 'yform_geo_osm::addAssets');

	$yform = new rex_yform();

	$yform->setObjectparams('form_name', 'table-rex_geotest');
	$yform->setObjectparams('form_action',rex_getUrl('REX_ARTICLE_ID'));
	$yform->setObjectparams('form_ytemplate', 'bootstrap');
	$yform->setObjectparams('form_showformafterupdate', 0);
	$yform->setObjectparams('real_field_names', true);

	$yform->setValueField('text', array('street','Straße','','0'));
	$yform->setValueField('text', array('postalcode','PLZ','','0'));
	$yform->setValueField('text', array('city','Ort','','0'));
	$yform->setValueField('number', array('lat','LAT','10','8','','0'));
	$yform->setValueField('number', array('lng','LNG','11','8','','0'));
	$yform->setValueField('osm_geocode', array('osm','OSM','lat,lng','street,postalcode,city','500'));

	$yform->setActionField('tpl2email', array('emailtemplate', 'emaillabel', '[email protected]'));
	echo $yform->getForm();

?>

Massencodierung

Die Massencodierung wird im yform Reiter Geo OSM eingestellt und gestartet. Auf der Einstellungsseite erscheinen Tabellen zur Auswahl, die ein Geocode Feld aus yform_geo_osm haben. Für die Codierung ist ein Key von Geoapify notwendig. Der Key wird in das entsprechende Feld eingetragen, dann kann es los gehen. Bitte die Lizenzbestimmungen zu Geoapify beachten. Die Massencodierung berücksichtigt die Einstellungen des yform_geo_osm-Feldes. Es werden jeweils Adresshäppchen à 200 Adressen codiert. Es werden nur solche Adressen codiert, die noch keinen Geocode Eintrag haben.

Changelog

Version 1.2.3 // 17.08.2020

  • Massencodierung über Geoapify hinzugefügt (dtpop)

Version 1.2.2 // 24.04.2020

Version 1.2.1 // 10.03.2020

  • Anpassung Einbindung Assets + JS Code im Frontend (OUTPUT_FILTER)

Version 1.2.0 // 09.03.2020

  • Bugfix #6
  • Anpassungen für Verwendung im Frontend
  • Beispielcode "YForm Frontend"

Version 1.1.2 // 14.02.2019

  • Versionsabhängikeit für YForm 3 korrigiert @skerbis

Version 1.1.1 // 15.07.2018

  • Deutschen Tile-Server eingebunden @skerbis

Version 1.1 // 11.03.2017

  • Umstellung auf eigenständiges AddOn
  • Bugfix "uninstall"

Version 1.0 // 28.01.2017

  • Initial release

Credits

  • Polarpixel - Peter Bickel (Testing / Ideen)
  • Wolfgang Bund - Massencodierung
  • Leaflet
  • Openstreetmaps
  • Mapbox

yform_geo_osm's People

Contributors

dtpop avatar imgbotapp avatar lexplatt avatar ngwngw avatar schuer avatar skerbis avatar tbaddade avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

dtpop

yform_geo_osm's Issues

Reihenfolge der Adressfelder unwirksam?

Könnte es sein, dass im Template value.osm_geocode.tpl.php

foreach($this->params["values"] as $val) {
if (in_array($val->getName(), $addressfields)) {
$address_selectors[] = "#".$val->getFieldId();
}
}
ein kleiner gemeiner Bug lauert?

Es will mir einfach nicht gelingen, die Adressfelder zu einer auswertbaren Adresse zu verknüpfen. In der Feld-Parametrisierung müssen die Felder für Strasse, Plz und Ort in genau dieser Reihenfolge angegeben werden. Wenn die Felder in der Tabelle zufällig in genau dieser Reihenfolge stehen, ist die Welt in Ordnung. Sind die Tabellenfelder aber in der Reihenfolge PLZ, Ort, Straße interessiert das das Addon nicht und die Adressauswertung schlägt fehl.

Bin ich der erste, der außer dem Autor das Addon nutzen will, und eine abweichende feldreihenfolge hat?

Fehlerursache: Die Liste der Tabellenfelder wird in deren Reihenfolge durchlaufen. Da nur geprüft wird, ob der Feldname in der Adressfeldliste ist, nicht aber an welcher Position, werden die Felder stets in der tabellenbezogenen Reihenfolge an das JS übermittelt.

Helfen würde so etwas:

    $adressHelper = array_flip ( $addressfields );
	foreach($this->params["values"] as $val) {
	    if (in_array($val->getName(), $addressfields)) {
	        $address_selectors[$adressHelper[$val->getName()]] = "#".$val->getFieldId();
	    }
	}
    ksort( $address_selectors );

Bitte mal drüberschauen. Ich mache erst mal noch keinen PR daraus, weil mir die ganze Adressauflösung von OSM suspekt ist. Da muss ich auch noch mal schauen.

Batch-Codieren

Wo finde ich die Option zum Batch-Kodieren, wie aus yform_geo früher bekannt?

Auflösung via https://nominatim.openstreetmap.org/search?q=

https://github.com/FriendsOfREDAXO/yform_geo_osm/blame/master/assets/geo_osm.js#L98

Adressauflösung via https://nominatim.openstreetmap.org/search?street=Stabenhof%202&city=Brodenbach&postalcode=56332&format=json&polygon=0&addressdetails=0&limit=1 funktioniert nicht.

Vorschlag: Auflösung via xhr.open('GET','https://nominatim.openstreetmap.org/search?q='+street+' '+city+' '+postalcode+'&format=json&polygon=0&addressdetails=0&limit=1');

yform template value.osm_geocode.tpl.php not found

11.12.2021, 15:25:40 Warning yform template value.osm_geocode.tpl.php not found redaxo/src/addons/yform/lib/yform.php 535


System report (REDAXO 5.13.1, PHP 7.4.25, MariaDB 10.3.32)
REDAXO
Version 5.13.1
PHP
Version 7.4.25
OPcache yes
Xdebug no
Database
Version MariaDB 10.3.32
Character set utf8
Server
OS Linux
SAPI fpm-fcgi
Webserver Apache
Request
Browser Chrome/96.0.4664.55
Protocol HTTP/2.0
HTTPS yes
Packages
accessdenied 1.0.6
adminer 1.9.2
backup 2.8.0
be_password 2.0.0
be_style 3.0.0
be_style/customizer 3.0.0
be_style/redaxo 3.0.0
be_style_fluent 3.0.2
bloecks 3.1.1
bloecks/cutncopy 3.1.1
cache_warmup 3.7.0
consent_manager 3.0.3
cronjob 2.8.1
developer 3.9.0
dsgvo 0.9beta5
events 2.0.0-beta2
feeds 3.1
install 2.9.3
maintenance 2.6.4
markitup 3.7.1
markitup/documentation 1.1.0
mblock 3.4.4
media_manager 2.12.1
mediapool 2.11.1
metainfo 2.8.3
mform 6.1.1
minify 2.2
pdfout 4.1.2
phpmailer 2.11.1
pixelfirma 2.1.2
pixelfirma/px_admin 2.0
pixelfirma/px_lib 2.1
project dev
quick_navigation 5.2.1
redactor2 4.2.1
structure 2.13.1
structure/content 2.13.1
structure/history 2.13.0
treestructure 1.0.3 beta
uploader 2.3.0
url 1.0.1
usage_check 2.3
users 2.8.2
watson 2.2.0
xoutputfilter 3.0.0-beta1
xoutputfilter/backend 3.0.0
xoutputfilter/documentation 1.0.0
xoutputfilter/frontend 3.0.0
xoutputfilter/import_export 3.0.0
xoutputfilter/languages 3.0.0
yform 4.0.0-beta4
yform/email 4.0.0-beta4
yform/manager 4.0.0-beta4
yform/tools 4.0.0-beta4
yform_geo_osm 1.2.4
yform_spam_protection 1.1.0
yform_usability 1.4
yrewrite 2.8.2
zip_install 1.1

Problem mit yform4

Hier:

$this->params['form_output'][$this->getId()] = $this->parse('value.osm_geocode.tpl.php', compact('addressfields', 'geofields', 'height', 'mapbox_token'));

Wird 'value.osm_geocode.tpl.php' als Templage übergeben. wenn ich das richtig sehe, gibts die Datei hier gar nicht und Redaxo wirft ein Whoops "Path connot be empty"

Mass-Geocoding funktioniert nicht

@dtpop bei klick auf
Geocodierung starten kommt: ein Button:

Google Geotagging starten: Hiermit werden alle Datensätze anhand des Felder "geodatamap" nach fehlenden Geopositionen durchsucht und neu gesetzt.
Klicke ich da drauf passiert nichts.

API-Key ist hinterlegt

Probleme mit Hausnummer in getrenntem Eingabefeld

Werden Straße und Hausnummer in getrennten Feldern gespeichert (und in YForm angegeben), schlägt die Geocodierung fehl. Vermutlich wird bei einer Felddefinition wie strasse, nr, plz, ort ein String wie dieser übergeben Straße, Nr, PLZ, Ort aber zwischen Straße und Nr. darf dann kein Komma sein Straße Nr, PLZ, Ort

Umstellung von Plugin nach AddOn

Diskussion im Slack: Plugins lassen sich nicht im Installer veröffentlichen, was ein merklicher Nachteil gegenüber AddOns ist. Plugins wurden ursprünglich dafür vorgesehen, dass AddOn-Autor:innen zusätzliche Funktionalität bereitstellen können. Sie sollten also Bestandteil eines AddOns sein, und nicht von extern bereitgestellt werden.

Technisch sind Plugins nahezu baugleich mit AddOns, deshalb kann jedes bestehende Plugin sehr einfach in ein AddOn umgewandelt und im Installer veröffentlicht werden.

karte wird nicht angezeigt - JS error

Hab das addon yform_geo_osm 1.2.3 in Redaxo 5.11.0 mit yform 3.4.1 installiert. Aber im Backend wird keine Karte angezeigt. API Key hab ich eingetragen - es kommt diese Fehlermeldung:
error_geo_osm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.