[gelöst]Webform Geofield mit Geocode liefert Fehler
am 09.01.2014 - 22:01 Uhr in
Hallo liebe Community,
ich habe eine Webform auf der Anfragen eingegeben werden. Dazu wird auch ein Ort und Postleitzahl in ein Textfeld angegeben, was dann in der Datenbank allerdings auch als Lat/Long abgespeichert werden soll um Entfernungen zu berechnen und Anfragen gezielt an bestimmte lokale User zu leiten. Dazu hab ich das Modul Webform Geofield gefunden, welches mithilfe des Geocoders meinen Ort umwandeln sollte.
Ich habe also in meine Webform ein Feld "Koordinaten" vom Typ Geofield hinzugefügt, welches die Werte City aus Textfeld "Ort" und PostalCode aus dem Textfeld "Postleitzahl" zieht. Die anderen Felder lasse ich auf .
Leider liefert mir beim submit der Webform Drupal folgende Fehlermeldung:
Notice: Undefined offset: 0 in webform_geofield_webform_submission_presave() (Zeile 263 von /customers/8/8/6/blueproductions.de/httpd.www/gigcommunity/sites/all/modules/webform_geofield/webform_geofield.components.inc).
Notice: Undefined offset: 0 in webform_geofield_webform_submission_presave() (Zeile 263 von /customers/8/8/6/blueproductions.de/httpd.www/gigcommunity/sites/all/modules/webform_geofield/webform_geofield.components.inc).
weiß jemand was hier zu tun ist? Ich habe im Geocoder keinen API- Key hinzugefügt, liegt es daran? Leider wird mir nur für Yahoo und einem mir Geocoder eine Eingabemöglichkeit angeboten, obwohl Geocoder doch auch mit Google Maps funktionieren sollte?
Ich bin für jede Hilfe dankbar!
Vorab vielen Dank und viele Grüße,
maximus
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie lässt du denn die
am 21.01.2014 - 12:39 Uhr
Wie lässt du denn die Berechnung machen? Mit Rules? Mit Webform Geocoder habe ich auch bis jetzt keinen Erfolg gehabt, genauso wie mit Webform Calc...
Hallo, wie meinst du das, wie
am 21.01.2014 - 13:48 Uhr
Hallo,
wie meinst du das, wie ich die Berechnung machen lasse?
Nach vielen vergeblich Versuchen habe ich nun selber mit Javascript eine Map integriert. Ort und Postleitzahl werden nach change()-Event geocodiert und dann mit einem Marker in der Map dargestellt.
Die Koordinaten werden über Javascript in ein unsichtbares private Field geschrieben und somit dann beim Submit der Webform auch mitgespeichert.
...war ne ewige rumprobiererei und sicher kein allzuguter Workaround. Das Modul Geofield für Webform hat sich dagegen schon wesentlich cooler angehört...aber wenns nicht funktioniert muss ich mich vorerst mit einer etwas umständlichen aber dafür funktionalen Eigenkreation zufrieden geben.
Wenns da noch eine andere Möglichkeit gibt in einer Webform durch die Angabe von Ort und Postleitzahl einen Lat/long-Wert in die Datenbank zu bekommen wär ich für Vorschläge dankbar!!
Eventuell ist aber die Eingabe von Anfragen per Webform nicht gerade ideal, wie ein anderes Forumsmitglied gerade angemerkt hat...vielleicht ändert sich da noch was.
Viele Grüße,
Max
Ich meine die Berechnung der
am 21.01.2014 - 13:55 Uhr
Ich meine die Berechnung der Koordinaten aus den eingegebenen Werten (Adresse)
Hier der
am 21.01.2014 - 14:05 Uhr
Hier der Javascript-Code-Ausschnit mit dem Geocode-Aufruf zur google maps geocodierung.
Die Karte wurde vorher initialisiert und dargestellt.
Die Funktion codeAdress() wird bei change()-Events auf den Feldern ort und postleitzahl ausgelöst.
var ort = document.getElementById("edit-submitted-anfrage-ort")
var plz = document.getElementById("edit-submitted-anfrage-postleitzahl")
var koordinaten = document.getElementById("edit-submitted-anfrage-koordinaten")
function codeAddress() {
var address = plz.value + " " + ort.value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
koordinaten.value = results[0].geometry.location;
} else {
alert("Ort konnte nicht gefunden werden: " + status);
}
});
}
vorher hatte ich es mit dem Modul "Webform Geofield" benutzt. Beim Einfügen eines Fields solchen Typs hat man die Möglichkeit die FUnktion "Geocodiere von.." oder so ähnlich auszuwählen. Da hab ich dann die zwei Felder Ort und Postleitzahl eingetragen aber wie gesagt nur Fehler erhalten und kein Ergebnis im Feld welches nun die Koordinaten enhalten hätte sollen.
Aus Ort und PLZ ergibt sich
am 21.01.2014 - 14:12 Uhr
Aus Ort und PLZ ergibt sich auch keine Koordinate. An sich bringt Geofield die Umrechnungsfunktion mit, weshalb du keinen eigenen Code verwenden musst.
Für Koordinaten benötigst du noch die zugehörige Anschrift, um Ergebnisse zu erzielen. Mit Webform würde ich das trotzdem nicht machen, sondern mit einem Inhaltstyp, damit die Daten auch als Nodes und nicht als Submissions gespeichert und verarbeitet werden können.
in gewissen Fällen hab ich
am 21.01.2014 - 14:22 Uhr
in gewissen Fällen hab ich aber nicht mehr als Ort und Postleitzahl...wieso brauchen die mehr Angaben? Google schaffts doch so auch =P
Du arbeitest aber scheinbar
am 22.01.2014 - 13:24 Uhr
Du arbeitest aber scheinbar nicht mit der Google Maps-API? Oder hast du GMap Location installiert? Beachte, dass du - je nach API-Version - einen Key von Google brauchst, der ab X Aufrufen Geld kostet. Unabhängig davon, ob du deine eigene Funktion oder das Modul in Verbindung mit dem Mapservice nutzt.