- Home
- Deutsch
- Skripten / Logik
- Adresse aus GPS Koordinaten ermitteln ?
Adresse aus GPS Koordinaten ermitteln ?
-
@david-g Scheint aber eher ein Problem von Google Maps zu sein, da auch auf der Karte das Gebäude nicht passt.
Ich habe hier mal die Adresse des iobrokers getestet: Lorenzstraße 16, 76135 Karlsruhe,
Google Maps zeigt eine falsche Hausnummer an, zumindest wenn man den Hausnummer auf OpenstreetMap glaubt.
Auch meine Heimatadresse ist mit Google Maps ungenau.
Mit dem API Aufruf via HTTP - gibts kein Problem.
-
@scrounger sagte in Adresse aus GPS Koordinaten ermitteln ?:
Gibt ne gute lib für javascript:
https://www.npmjs.com/package/nominatim-clientDanke nochmals an @Scrounger - habs gerade mit der Bibliothek probiert, damit kann man sich den API Key sparen - die Ausgabe ist ähnlich, aber mit der gleichen Genauigkeit der Adresse:
-
@mickym
Mit dem Parameterzoom
kann man die ganuigkeit einstellen, musst Mal testen.Hatte das hier m verwendet:
https://github.com/Scrounger/ioBroker.slideshow/blob/main/src/modules/nominatim.ts -
@scrounger Ja das hatte ich bei dem anderen Openmaps Ausdruck schon gemacht - aber ich denke mal, dass Google Maps eher ein Problem hat. Solange eine eindeutige Hausnummer rauskommt, ist das OK. Auch der iobroker scheint ja Openmaps in den Systemeinstellungen zu nutzen.
-
Wenn die Daten ja eh meistens von OSM kommen, warum geht man dann so einen umständlichen Weg?
Sind doch vermutlich immer die selben Ergebnisse.
Habe in Blockly nur diesen kleinen JS-Block (kann da in dem Editor leider am Smartphone keinen Text kopieren):
-
@david-g Ok - ja das war wohl, weil ich erst google maps Koordinaten eingegeben habe. Nun liefert es auch das gleiche Ergebnis:
Also viel Luft um nichts - dafür haben wir ja nun viele Möglichkeiten ausprobiert.
-
@mickym
Was steht oben in der Funktion "OSM" ? -
Im vorletzten Post hast du einen einen Screenshot.
Kann ich nachher wenn ich am Rechner bin posten. -
@david-g
das wäre sehr nett von dir -
Das ist mein Blockly:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="2]3hGy$Na|L2qX#+=;E8">lat</variable> <variable id=".hv$JjjT(QY(0c2!/tuc">lon</variable> <variable id="InM51wH+hhRZ1K}Uo6R:">result</variable> <variable id="T]JEvDq|YNa4JKlpQnSS">hausnummer</variable> <variable id="A)i-Et;L|j!6^^m_Y4-G">strasse</variable> <variable id="6*5_=d|`GXhhd:zBG^[c">plz</variable> <variable id="CvK?S#qy;hmBCz`tdgBf">ort</variable> <variable id="8Mxf1lU^+(_[XwY|L3(:">ort2</variable> <variable id="gUjA0kp/zoi==V%A7(KI">kreis</variable> <variable id="r,(Pk/vT!2f9I99,*O1I">bundesland</variable> <variable id="-llvKNjIkTSSp;-GZ(3]">land</variable> <variable id="329{(}BZRyRCy|UNJ2Mo">stadt</variable> <variable id="j|Nt5wiqkFM%y4V(19rU">stadtteil</variable> </variables> <block type="procedures_defcustomreturn" id="?;wMWdJ!vB8:m#;$39f@" x="-113" y="-38"> <mutation statements="false"> <arg name="lat" varid="2]3hGy$Na|L2qX#+=;E8"></arg> <arg name="lon" varid=".hv$JjjT(QY(0c2!/tuc"></arg> </mutation> <field name="NAME">OSM</field> <field name="SCRIPT">dmFyIHJlcXVlc3QgPXJlcXVpcmUoJ3JlcXVlc3QnKTsNCmxldCByZXN1bHQ7DQpjb25zdCBvcHRpb25zID0gew0KICAgIHVybDogJ2h0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3JldmVyc2UucGhwP2Zvcm1hdD1qc29uJmxhdD0nICsgbGF0ICsgJyZsb249JyArIGxvbiArICcmem9vbT0xOCcsDQogICAgbWV0aG9kOiAnR0VUJywNCiAgICBoZWFkZXJzOiB7DQogICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsDQogICAgICAgICdBY2NlcHQtQ2hhcnNldCc6ICd1dGYtOCcsDQogICAgICAgICdVc2VyLUFnZW50JzogJ2lvYnJva2VyIHNjcmlwdCcNCiAgICB9DQp9DQoNCnJlcXVlc3Qob3B0aW9ucywgZnVuY3Rpb24oZXJyLHJlc3BvbnNlLGJvZHkpew0KICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7DQp9KQ0KYXdhaXQgd2FpdCgxMDAwKTsNCnJldHVybiByZXN1bHQ7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="on" id="4ru.qSpei2XH^rB2vH-S" x="-112" y="12"> <field name="OID">places.0.tasker.latitude</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="wR~~7^?!0{b~ZWJW2z2Y"> <field name="VAR" id="2]3hGy$Na|L2qX#+=;E8">lat</field> <value name="VALUE"> <block type="get_value" id="7x~tx,s?a(xli`sb]5*z"> <field name="ATTR">val</field> <field name="OID">places.0.tasker.latitude</field> </block> </value> <next> <block type="variables_set" id="|i,e7-xsVZtwL,YE9Pns"> <field name="VAR" id=".hv$JjjT(QY(0c2!/tuc">lon</field> <value name="VALUE"> <block type="get_value" id="!/+#$U+|eCP!WX]+]~l|"> <field name="ATTR">val</field> <field name="OID">places.0.tasker.longitude</field> </block> </value> <next> <block type="variables_set" id="_]-UxYH%D~}#l6DWPyqA"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> <value name="VALUE"> <block type="procedures_callcustomreturn" id="E6q6k3RA-DSW4n:wbmt5" inline="true"> <mutation name="OSM"> <arg name="lat"></arg> <arg name="lon"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="O~3vjlaQApGabQ#KZ_Np"> <field name="VAR" id="2]3hGy$Na|L2qX#+=;E8">lat</field> </block> </value> <value name="ARG1"> <block type="variables_get" id=";6In%LVgU8c~ZW=V^#!+"> <field name="VAR" id=".hv$JjjT(QY(0c2!/tuc">lon</field> </block> </value> </block> </value> <next> <block type="variables_set" id="*o+J}YHtCQe-Y!}W%d}_"> <field name="VAR" id="T]JEvDq|YNa4JKlpQnSS">hausnummer</field> <value name="VALUE"> <block type="text" id="zyNnn~74lGRs=kz@zQ%x"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="6UkRrRin?=5699,9.LJ:"> <field name="VAR" id="A)i-Et;L|j!6^^m_Y4-G">strasse</field> <value name="VALUE"> <block type="text" id="p)6B^~T_Rv0AiRB*u]mk"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="x-ZTggEZU,P_aRK;JG.q"> <field name="VAR" id="6*5_=d|`GXhhd:zBG^[c">plz</field> <value name="VALUE"> <block type="text" id="[tz-5NkFJVl*J(Mfl$dw"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="KEkLwj1;v+n`|hcsbV~}"> <field name="VAR" id="CvK?S#qy;hmBCz`tdgBf">ort</field> <value name="VALUE"> <block type="text" id="X=_{Y7%|UC?a,BJinB-C"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="ne@!nzO7Z8KNio9AsgdG"> <field name="VAR" id="8Mxf1lU^+(_[XwY|L3(:">ort2</field> <value name="VALUE"> <block type="text" id="oR.COijs/oYMW@0AX*~K"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="q86BP|SHyI5Sw0wKit:9"> <field name="VAR" id="gUjA0kp/zoi==V%A7(KI">kreis</field> <value name="VALUE"> <block type="text" id="r*imPdgaFOkct!+lI5Yo"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="y8:oB^s_@fY8aPp]4mX$"> <field name="VAR" id="r,(Pk/vT!2f9I99,*O1I">bundesland</field> <value name="VALUE"> <block type="text" id="CwL{-QIfDx}g^#f)3$)6"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="@0XAk3T@~yVm(H7^vCll"> <field name="VAR" id="-llvKNjIkTSSp;-GZ(3]">land</field> <value name="VALUE"> <block type="text" id="(N7@62Jo{saK[@@@ZFiE"> <field name="TEXT"></field> </block> </value> <next> <block type="variables_set" id="|mCWb0s,|mzF}8xffNqP"> <field name="VAR" id="T]JEvDq|YNa4JKlpQnSS">hausnummer</field> <value name="VALUE"> <block type="get_attr" id="-(-HXp55!|VOg5N|avy5"> <value name="PATH"> <shadow type="text" id="v{!XANWJ]P:Q^(gtzEmk"> <field name="TEXT">address.house_number</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="q*4$^E8{-,BUB$}}UtC)"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="o^r(Hxy,g21/dt~9TKZy"> <field name="VAR" id="A)i-Et;L|j!6^^m_Y4-G">strasse</field> <value name="VALUE"> <block type="get_attr" id="4BRp8)RL(Z,ya1V7L%,k"> <value name="PATH"> <shadow type="text" id="@+Kn.LF%vkB35cm%To%G"> <field name="TEXT">address.road</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="/rsi@S]q*[hct$N@3[U^"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="+g#!=48^0Ptra,[aQpyr"> <field name="VAR" id="6*5_=d|`GXhhd:zBG^[c">plz</field> <value name="VALUE"> <block type="get_attr" id="~ZV;a5(Aw/K=L^#a3sw]"> <value name="PATH"> <shadow type="text" id="w:W|g,i:tSkuP*I^o;uQ"> <field name="TEXT">address.postcode</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="{yOR**tGuGj71m^D:d[!"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="m;eWQI56kzaa0toQpJ?x"> <field name="VAR" id="329{(}BZRyRCy|UNJ2Mo">stadt</field> <value name="VALUE"> <block type="get_attr" id="v+*aTZolu/3.opuTsA2I"> <value name="PATH"> <shadow type="text" id="dK9#DRY/x5vYP7}W;`F("> <field name="TEXT">address.town</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="nvly[(7r/+?7*WB4@eh;"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="oen2z3!LI}$?{hlibd,q"> <field name="VAR" id="j|Nt5wiqkFM%y4V(19rU">stadtteil</field> <value name="VALUE"> <block type="get_attr" id="2gd)S{;0+7JB)rtZ;bqr"> <value name="PATH"> <shadow type="text" id="qpGzmC!GGqM(OzR`L)?c"> <field name="TEXT">address.village</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="V.[]^O%U]RWf`BOs]tUD"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="{yDWpRmYXY?]XfHdQ|g2"> <field name="VAR" id="gUjA0kp/zoi==V%A7(KI">kreis</field> <value name="VALUE"> <block type="get_attr" id="g~#/g^5sZK=Zj,%Ke5/s"> <value name="PATH"> <shadow type="text" id="W1g8|oIEO~6|_=|7R@7X"> <field name="TEXT">address.county</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="J)Bk|4^o(lvM(iv~(@xj"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="JJ=pAjKY88C81_RZa79="> <field name="VAR" id="r,(Pk/vT!2f9I99,*O1I">bundesland</field> <value name="VALUE"> <block type="get_attr" id="8h+PMWbE#|bn}CD4oTi|"> <value name="PATH"> <shadow type="text" id=";GH4zjhdYRVGRVHNvmLs"> <field name="TEXT">address.state</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Sg;0Iu]BS#a}1VqQ`$?9"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="variables_set" id="zw36a!](Wlgkn^.bA_v,"> <field name="VAR" id="-llvKNjIkTSSp;-GZ(3]">land</field> <value name="VALUE"> <block type="get_attr" id="+fQ`)n1@Ww}/{%OO:K36"> <value name="PATH"> <shadow type="text" id="_MyW^~va)F:Z:IVq$)eR"> <field name="TEXT">address.country</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="b!.wQ$]TN~jwuab{}EET"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> </block> </value> <next> <block type="update" id="if)ck30){M%-RNa%6YzW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Kamera_tets</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="L]Xd0hlDRwDDkUtpp:Sy"> <mutation items="10"></mutation> <value name="ADD0"> <block type="logic_ternary" id="`UFoXvUPv1Pc4h`=|~JD"> <value name="IF"> <block type="variables_get" id="[.49M8y)hxq~{X^IRIhx"> <field name="VAR" id="A)i-Et;L|j!6^^m_Y4-G">strasse</field> </block> </value> <value name="THEN"> <block type="variables_get" id="SWDWkrP_wLd{sF*qU!vC"> <field name="VAR" id="A)i-Et;L|j!6^^m_Y4-G">strasse</field> </block> </value> </block> </value> <value name="ADD1"> <block type="logic_ternary" id="vcVZEb8DzN)h~?~xN8-9"> <value name="IF"> <block type="variables_get" id="I3DG;/dmb?K{_5{;owg2"> <field name="VAR" id="T]JEvDq|YNa4JKlpQnSS">hausnummer</field> </block> </value> <value name="THEN"> <block type="text_join" id="Ai]7i@~5/W?FUdK]ur}4"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="6yfl7fSvG~cE$u:.$TgC"> <field name="TEXT"> </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="+S)@B`}}t2SG}7vuMVJD"> <field name="VAR" id="T]JEvDq|YNa4JKlpQnSS">hausnummer</field> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="logic_ternary" id="zEMV.C]qSX{P`T-XP^Hb"> <value name="IF"> <block type="variables_get" id=";EN^{$cRysb_9ZPMBt`M"> <field name="VAR" id="A)i-Et;L|j!6^^m_Y4-G">strasse</field> </block> </value> <value name="THEN"> <block type="text" id="GLb;?7As.fEM?4nR;ne="> <field name="TEXT">, </field> </block> </value> </block> </value> <value name="ADD3"> <block type="logic_ternary" id="}z,CZJfQ*/A/w7YTi2~E"> <value name="IF"> <block type="variables_get" id="6h8XVvv(r%]fP]`_z[l:"> <field name="VAR" id="6*5_=d|`GXhhd:zBG^[c">plz</field> </block> </value> <value name="THEN"> <block type="text_join" id="kpl;N_th,XsHq{je#6GM"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id=";szAWOxJP9i/Y)YwBv?j"> <field name="VAR" id="6*5_=d|`GXhhd:zBG^[c">plz</field> </block> </value> <value name="ADD1"> <block type="text" id="#m)lI}H`?u[CTjPpEYp."> <field name="TEXT"> </field> </block> </value> </block> </value> </block> </value> <value name="ADD4"> <block type="logic_ternary" id="f3q*%jcof-N9$#Oke-.o"> <value name="IF"> <block type="variables_get" id="NWTfW)1!!bSVDz~U)m/1"> <field name="VAR" id="329{(}BZRyRCy|UNJ2Mo">stadt</field> </block> </value> <value name="THEN"> <block type="text_join" id="sj#]HAN^-Gkp+[eghQuo"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="#.EdV`CR}}mi^q9|7Q#C"> <field name="VAR" id="329{(}BZRyRCy|UNJ2Mo">stadt</field> </block> </value> </block> </value> </block> </value> <value name="ADD5"> <block type="logic_ternary" id="3}(rCIxnd-i9H=r%9|D_"> <value name="IF"> <block type="variables_get" id="_zF]fccSN[EaZF7S+`Bq"> <field name="VAR" id="j|Nt5wiqkFM%y4V(19rU">stadtteil</field> </block> </value> <value name="THEN"> <block type="text_join" id="5{_~Hsp,?f;srXX4`u7b"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="E}:x!ShHB.!M#zcb=u4m"> <field name="TEXT"> (</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="VH3cs+}4Q5RVaOsB{:i@"> <field name="VAR" id="j|Nt5wiqkFM%y4V(19rU">stadtteil</field> </block> </value> <value name="ADD2"> <block type="text" id="4Ta#.3p=$7?enQV;2a1%"> <field name="TEXT">)</field> </block> </value> </block> </value> </block> </value> <value name="ADD6"> <block type="logic_ternary" id="Vj8WjOez[mL4Zc?AX3Zx"> <value name="IF"> <block type="variables_get" id="M-z[lpQ[x]I4k83U:,Gd"> <field name="VAR" id="gUjA0kp/zoi==V%A7(KI">kreis</field> </block> </value> <value name="THEN"> <block type="text_join" id="ERc_C[-PT^?8-q,#uh-y"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="bCKq!|q{kx9I6..n^?8f"> <field name="TEXT">, </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="kWEHuoiRjkV#krISVm^`"> <field name="VAR" id="gUjA0kp/zoi==V%A7(KI">kreis</field> </block> </value> </block> </value> </block> </value> <value name="ADD7"> <block type="logic_ternary" id="_baHXH3=jK$cZ5Vt!*eN"> <value name="IF"> <block type="variables_get" id="XbvIoiom{mDSet)68I9V"> <field name="VAR" id="r,(Pk/vT!2f9I99,*O1I">bundesland</field> </block> </value> <value name="THEN"> <block type="text_join" id="Pd(Rt;kJBEe!P588$8/d"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=".szY]0{i}{xj3sH-dOie"> <field name="TEXT">, </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="VO9O.ditr_lkbbC}[#HM"> <field name="VAR" id="r,(Pk/vT!2f9I99,*O1I">bundesland</field> </block> </value> </block> </value> </block> </value> <value name="ADD8"> <block type="logic_ternary" id="%8ys_w*3qpg6I?!YB2Wr"> <value name="IF"> <block type="variables_get" id="Y-mnVf(#$Q3@y^^?[9)J"> <field name="VAR" id="-llvKNjIkTSSp;-GZ(3]">land</field> </block> </value> <value name="THEN"> <block type="text_join" id="QIBSvhmB@0;noHJb|(yv"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="N*!Q0NE,)$`$jJ!-MK4h"> <field name="TEXT">, </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="7L_T5x.wW}%U!x`^s7Dc"> <field name="VAR" id="-llvKNjIkTSSp;-GZ(3]">land</field> </block> </value> </block> </value> </block> </value> <value name="ADD9"> <block type="logic_ternary" id="bneVX)V$6)Olno`7@-!v"> <value name="IF"> <block type="logic_negate" id="90!{0(0ipi52TP$IVCiv"> <value name="BOOL"> <block type="variables_get" id="cw17gqGGH_e|zmnNA:BX"> <field name="VAR" id="-llvKNjIkTSSp;-GZ(3]">land</field> </block> </value> </block> </value> <value name="THEN"> <block type="text" id=")-A+1mmU{^PQK+yNwNE%"> <field name="TEXT">Keine Adressen verfügbar.</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Mir war es wichtig, für meine Visualisierung einen schönen sauberen Adressblock zu bekommen. Deshalb frage ich sehr viel ab, damit keine doppelten Kommas entstehen wenn es eine Info nicht gibt.
Wenn es zB so aussehen soll:
Teststraße 1, 12345 Testdorf, Deutschland
Wenn es keine Straße gibt wollte ich da nicht
, 12345 Testdorf, Deutschland
stehen haben.
Hier der Inhalt vom JS-Baustein ohne den Rest:
var request =require('request'); let result; const options = { url: 'https://nominatim.openstreetmap.org/reverse.php?format=json&lat=' + lat + '&lon=' + lon + '&zoom=18', method: 'GET', headers: { 'Accept': 'application/json', 'Accept-Charset': 'utf-8', 'User-Agent': 'iobroker script' } } request(options, function(err,response,body){ result = JSON.parse(body); }) await wait(1000); return result;
-
@david-g
Funktioniert einwandfrei.
Vielen Dank -
Einen kleinen schönheitsfehler habe ich noch.
Den aktuellen Standort lasse ich mir im "Open Street Map" Widget anzeigen.
Ändert sich nun die Koordinaten, springt der Merker im Widget nicht an die richtige Stelle.
Aktualisiere ich dir VIS, dann bin ich an der richtgen Position.EDIT: Ich denke, dass ist einTiming Problem.
Die Datenpunkte für die Koordinaten (LAT / LNG) werden nacheinander geschrieben, mit einer Millisekunde versatz.
In dieser Millisekunde hat das Widget schon reagiert und springt zu den neuen Koordinaten, obwohl noch nicht beide
Datenpunkte aktuallisiert wurden.