Geodaten in FileMaker integrieren – Einfacher geht’s kaum
Häufig sprechen wir über Geodaten – doch wie bekommen wir diese eigentlich in unsere FileMaker-Datenbank? In vielen meiner kurzen Anrisse, geht es immer wieder um Geo-Daten. Wir übertragen sie in Richtung Google-Maps, in verschiedensten Formen. Nur wir benötigen diese im ersten Schritt. Wenn Sie eine Adresse in Latitude (Breitengrad) und Longitude (Längengrad) umwandeln möchten, bietet sich die Nutzung der Google Geocoding API an. Aber seien wir ehrlich: Niemand hat Lust, sich mit komplexen JSON-Daten oder unnötigem Ballast herumzuschlagen. Darum haben wir uns eine besonders „faule“, aber effektive Lösung überlegt: Wir lassen uns einfach nur die beiden benötigten Geodaten ausgeben – fertig. Ich erhalte eine Variable mit zwei Elementen. Diese kann ich dann in FileMaker mit zwei Scriptschritten weiterverarbeiten.
Warum Geodaten in FileMaker nutzen?
Geodaten können in einer Datenbank unglaublich vielseitig eingesetzt werden: • Visualisierung: Stellen Sie Adressen als Marker in Google Maps dar. • Navigation: Berechnen Sie Routen und Entfernungen. • Datenanalyse: Prüfen Sie, welche Kunden sich in einem bestimmten Radius befinden.
Die Herausforderung? FileMaker arbeitet am besten mit einfachen, strukturierten Daten. Darum konzentrieren wir uns auf die Essenz: Breitengrad und Längengrad.
Die „faule“ Lösung: Minimalistische Datenabfrage
Statt alle Details wie die formattierte Adresse oder die Geometrie-Typen der Google Geocoding API zu verarbeiten, nutzen wir ein PHP-Skript, das uns genau die zwei benötigten Werte zurückgibt: Latitude und Longitude, getrennt durch einen Zeilenumbruch. So lassen sich die Daten in FileMaker besonders einfach integrieren.
Mein Beispiel:
< ?php
// API-Key hier einfügen
$apiKey = "hier der Goggle API-Key";
// Parameter prüfen
if (isset($_GET['params'])) {
$params = explode('|', $_GET['params']); // Erwartet: Straße|PLZ|Stadt
if (count($params) >= 3) {
$street = trim($params[0]); // Straße und Hausnummer
$city = trim($params[2]); // Stadt
$zip = trim($params[1]); // Postleitzahl
$country = isset($params[3]) ? trim($params[3]) : "DE"; // Standard: Deutschland
// Adresse zusammenstellen
$addressComponents = array_filter([$street, $city, $zip, $country]); // Entfernt leere Werte
$address = implode(',', $addressComponents);
$url = "[maps.googleapis.com/maps/api/...](https://maps.googleapis.com/maps/api/geocode/json?address=)" . urlencode($address) . "&key={$apiKey}";
// API-Anfrage senden
$response = file_get_contents($url);
// Prüfen, ob die Antwort erfolgreich war
if ($response === false) {
echo "Fehler beim Abrufen der API\n";
exit;
}
// API-Antwort decodieren
$data = json_decode($response, true);
// Ergebnisse prüfen
if ($data['status'] === "OK" && isset($data['results'][0]['geometry']['location'])) {
$location = $data['results'][0]['geometry']['location'];
// Nur Latitude und Longitude ausgeben, getrennt durch Zeilenumbruch
echo $location['lat'] . "\n" . $location['lng'];
} else {
echo "Keine Geodaten gefunden\n";
}
} else {
echo "Ungültiges Format. Erwartet: Straße|PLZ|Stadt\n";
}
} else {
echo "Parameter 'params' fehlt. Erwartet: Straße|PLZ|Stadt\n";
}
Das ganze sind 45 Zeilen Code. In FileMaker hätte ich die JSON-Rückgabe erstmal umständlich zerlegen müssen. Über diese Form bekomme ich einen Parameter mit z.B. diesen Werten.
52.6033116 13.3534074
Dafür habe ich lediglich die Straße, PLZ und Stadt übertragen. Natürlich auch das auf ganz leichte Weise.
ihr-server.de/geocode.p… Ring 83|13435|Berlin
Getrennt durch einen Pipe, werden die Daten in eine FileMaker-Variable geschrieben. Über den FM-Befehl -aus URL einfügen- bekomme ich dann die beiten gewünschten Werte zurück und kann sie einfach in zwei FileMaker Felder schreiben.
Mein Fazit, manchmal lohnt es sich, Dinge einfach zu halten – und unsere „faule“ Lösung ist das beste Beispiel dafür. Mit nur einem Skript und einem einfachen Aufruf können Sie Geodaten in FileMaker integrieren und so Ihre Datenbank erweitern. Probieren Sie es aus und lassen Sie Ihre Adressen lebendig werden!