WinFuture-Forum.de: [PHP] Nächsten Flugplatz per Geolocation - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[PHP] Nächsten Flugplatz per Geolocation ICAO-Code aus WGS84 generieren


#1 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.759
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 21. Juli 2012 - 12:18

Hi,

ich bin gerade dabei ein bisschen mit phpweather zu basteln. Das ist eine Wetterfunktion, das die Daten von der ICAO holt. Das funktioniert soweit ganz gut. Ich bekomme die Daten au jeden Fall schonmal formatiert. Nun muss ich da aber immer den jeweiligen ICAO-Code des Flugplatzes übergeben.

Meine Überlegung war nun, dass ich das ganze mit einer GeolocationAPI verbinde. Dafür brauche ich aber irgendwo eine frei verfügbare Datenbank, der ich im besten Fall einfach die WGS84-Geodaten übergebe und den nächstgelegenen (oder besser die nächstgelegenen 5) Flugplätze zurückbekomme (im Optimalfall direkt den ICAO-Code).

Kennt jemand eine entsprechende Datenbank, die ich anzapfen kann oder irgendeine API/ein Script, welches das für mich macht?

Gruß,
skaven
Eingefügtes Bild
Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   Ludacris 

  • Gruppe: Moderation
  • Beiträge: 4.689
  • Beigetreten: 28. Mai 06
  • Reputation: 218
  • Geschlecht:Männlich

geschrieben 21. Juli 2012 - 13:10

ich habe so etwas ähnliches programmiert allerdings basiert mein zeug auf einem schlechten JavaScript code da ich nicht aufs Ajax Callback warten will - im Endeffekt berechne ich den Abstand zwischen zwei Koordinaten und gebe diesen dann in Kilometer aus. Wenn du das den Abstand zu allen Flugplätzen berechnest kannst du sie in ein Array speichern, der reihe nach sortieren und dann die ersten x ausgeben und die wetterdaten daraus ziehen.

Im Endeffekt kannst du die Berechnung auch in PHP machen (was bestimmt dem Javascript Zeug vorzuziehen ist) aber du wirst Javascript brauchen um die aktuelle Position herauszufinden!

<script>
$(document).ready(function () {   
	if (navigator && navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(geo_success, geo_error);
	}
	else {
		error('Geolocation is not supported.');
	}
});
 
function geo_success(position) {
    printLatLong(position.coords.latitude, position.coords.longitude);
}
 
function geo_error(err) {
    if (err.code == 1) {
        error('The user denied the request for location information.')
    } else if (err.code == 2) {
        error('Your location information is unavailable.')
    } else if (err.code == 3) {
        error('The request to get your location timed out.')
    } else {
        error('An unknown error occurred while requesting your location.')
    }
}
 
function printLatLong(lat, long) {
	var lon = long;
        var loclat = <?php echo $lat;?>;
	var loclon = <?php echo $long;?>;
	var distance = (6367 * Math.acos( Math.sin(lat)*Math.sin(loclat) + Math.cos(lat)*Math.cos(loclat)*Math.cos(loclon-lon)))/100;
	var distance = Math.round(distance*100)/100;
	document.getElementById('distance').innerHTML = distance+" KM von dir entfernt";
}
 
function error(msg) {
    alert(msg);
}
</script>


die beiden PHP Variablen $lat und $long kommen bei mir aus der Datenbank und werden schon vor dem JavaScript teil belegt.

Ich hoffe das hilft dir etwas weiter. (ich bin mir auch nicht ganz sicher ob das Ergebnis als Zahl so wirklich stimmt, da ich selbst noch am Feinschliff der Seite arbeite und Bugs beheben muss aber die nähe sollte sich so gut genug herausfinden lassen)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0