NEWS
Adresse in Längen und Breitengraden umwandeln
-
Hallo,
ich benötige mal wieder eure Hilfe. In einem Datenpunkt javascript.0.Anschrift ist in dieser Form "Musterstadt Musterstrasse 1" eine Adresse. Wie kann ich diese in Datenpunkte als Längen-u.Breitengrade wiedergeben und diese dann in vis.map darstellen?
In der Suche hab ich nix gefunden, was mir weiterhilft und programmieren ist leider nicht so mein Ding.
-
Ein Mittel dazu ist Geocoding, Google hat eine API dafür: https://developers.google.com/maps/docu … ding?hl=de
Wenn du das aber nur einmal brauchst dann gehe in google-maps auf den Ort, und du findest dann in der Adresszeile mit @breitengrad,längengrad,??z wie @47.98962,16.6585758,15z
In einem FHEM-Forum gabs auch mal einen Link zu einer Api die Ortsname in B/L-Grade umwandelt, natürlich für Orte die mehrmals vorkommen alle Ergebnisse listet. Ist mir leider entfallen da ich nur noch ioBroker verwende und da meinen Breiten/Längengrad im Adapter eingestellt habe.
-
Mit dem NPM-Modul https://www.npmjs.com/package/address-details, in die Konfiguration der JS-Instanz eingetragen, kann man die Koordinaten und weitere Details ermitteln.
-
> Mit dem NPM-Modul address-details, in die Konfiguration der JS-Instanz eingetragen, kann man die Koordinaten und weitere Details ermitteln.
In der Instanz habe ich das eingetragen. Wie würde dann ein passendes Script aussehen? Vom Programmieren verstehe ich nicht viel. Meistens bastel ich mit blockly etwas rum.
Vielleicht kannst du mir da noch etwas behilflich sein.
> Ein Mittel dazu ist Geocoding, Google hat eine API dafür: [https://developers.google.com/maps/docu](https://developers.google.com/maps/docu) … ding?hl=de
Dieses Beispiel kommt mir ein wenig umständlich vor oder täuscht das? Wie würde hier ein Script aussehen, damit ich das in vis darstellen kann ohne über das html-widget sondern über das map-widget zu gehen? -
In der Instanz habe ich das eingetragen. Wie würde dann ein passendes Script aussehen? `
// var idAdresse = '...'; // var idLatitude = '...'; // var idLongitude = '...'; var Adresse = 'Prenzlauer Allee 100, Berlin'; // oder mit getState(idAdresse).val aus Datenpunkt einlesen var AddressDetails = require('address-details'); AddressDetails.for(Adresse, function (err, details) { if(err) log('Fehler Adress-Details: ' + err, 'error'); else { log('volle Adresse: ' + details.fullAddress); log('geogr. Breite: ' + details.latitude); // oder mit setState(idLatitude, details.latitude) in Datenpunkt schreiben log('geogr. Länge: ' + details.longitude); // oder mit setState(idLongitude, details.longitude) in Datenpunkt schreiben } });
-
Ok, soweit hab ich das hinbekommen. Datenpunkte werden geschrieben. Allerdings müsste das ganze noch getriggert werden, wenn der Datenpunkt aktualisiert wird. Was muss da noch angepasst werden?
Und das andere Problem: wie bekomme ich dann die Datenpunkte Lat.und Long in die vis-map als Marker?
-
Allerdings müsste das ganze noch getriggert werden, wenn der Datenpunkt aktualisiert wird. `
... function getPos() { AddressDetails.for(Adresse, function (err, details) { if(err) log('Fehler Adress-Details: ' + err, 'error'); else { log('volle Adresse: ' + details.fullAddress); setState(idLatitude, details.latitude); // in Datenpunkt schreiben setState(idLongitude, details.longitude); // in Datenpunkt schreiben } }); } getPos(); // Script start on(idAdresse, function(dp) { // Triggern bei Wertänderung Adresse = dp.state.val; getPos(); });
-
Vielen Dank für die schnelle Hilfe. Das hat schon mal super geklappt.