In diesem Artikel werden wir uns die Verwendung der Geolocation-API von Google ansehen, um Felder eines adaptiven Formulars zu füllen. Dieser Anwendungsfall wird häufig verwendet, wenn Sie die aktuellen Adressfelder in einem Formular ausfüllen möchten.
Die folgenden Schritte wurden zur Verwendung der Geolocation-API in Adaptive Forms ausgeführt.
Abrufen des API-Schlüssels von Google zur Verwendung der Google Maps-Plattform. Sie erhalten einen Testschlüssel, der 1 Jahr gültig ist.
Das adaptive Formularfragment wurde mit Feldern für die aktuelle Adresse erstellt
Die Geolocation-API wurde beim Klicken-Ereignis des Bildobjekts des adaptiven Formulars aufgerufen
Die vom API-Aufruf zurückgegebenen JSON-Daten wurden analysiert und die Feldwerte für das adaptive Formular wurden entsprechend festgelegt.
navigator.geolocation.getCurrentPosition(showPosition);
function showPosition(position)
{
console.log(" I am inside the showPosition in fragment");
console.log("Latitude: " + position.coords.latitude + "Longitude " + position.coords.longitude);
var url = "https://maps.googleapis.com/maps/api/geocode/json?latlng="+position.coords.latitude+","+position.coords.longitude+"&key=<your_api_key>";
console.log(url);
$.getJSON(url,function (data, textStatus){
var location=data.results[0].formatted_address;
console.log(location);
for(i=0;i<data.results[0].address_components.length;i++)
{
if(data.results[0].address_components[i].types[0] == "street_number")
{
streetNumber.value = data.results[0].address_components[i].long_name;
}
if(data.results[0].address_components[i].types[0] == "route")
{
streetName.value = data.results[0].address_components[i].long_name;
}
if(data.results[0].address_components[i].types[0] == "postal_code")
{
zipCode.value = data.results[0].address_components[i].long_name;
}
if(data.results[0].address_components[i].types[0] == "locality")
{
city.value = data.results[0].address_components[i].long_name;
}
if(data.results[0].address_components[i].types[0] == "administrative_area_level_1")
{
state.value = data.results[0].address_components[i].long_name;
}
}
});
}
In Zeile 1 verwenden wir die HTML Geolocation-API, um den aktuellen Speicherort abzurufen. Sobald der aktuelle Speicherort abgerufen wurde, übergeben wir den aktuellen Speicherort an die Funktion showPosition .
In der Funktion showPosition verwenden wir die Google-API, um die Adressdetails für den angegebenen Längen- und Breitengrad abzurufen.
Die von der API zurückgegebene JSON-Datei wird dann analysiert, um die Felder des adaptiven Formulars festzulegen.
Zu Testzwecken können Sie das HTTP-Protokoll mit localhost in der URL verwenden.
Für den Produktionsserver müssen Sie SSL für Ihren AEM-Server aktivieren, um diese Funktion zu erhalten.
Das mit diesem Artikel verknüpfte Beispiel wurde mit der US-Adresse getestet. Wenn Sie diese Funktion an anderen geografischen Standorten verwenden möchten, müssen Sie möglicherweise das JSON-Parsing anpassen.
Gehen Sie wie folgt vor, um diese Funktion auf Ihren Server zu übertragen:
!![NOTE] Diese Funktion wurde mit AEM Forms 6.3 und höher getestet.
- Abrufen des Google API-Schlüssels.
- Importieren Sie die mit diesem Artikel verknüpften Assets in AEM.
- Öffnen Sie das adaptive Formularfragment im Bearbeitungsmodus.
- Öffnen Sie den Regeleditor für die Komponente Bildauswahl .
- Ersetzen Sie die <your_api_key> mit dem Google-API-Schlüssel.
- Speichern Sie Ihre Änderungen.
- Formularvorschau.
- Klicken Sie auf das Symbol "Geolocation".
- Ihr Formular sollte mit Ihrem aktuellen Speicherort ausgefüllt werden.