Dans PHP, Timezone_Location_get () est une fonction très pratique pour obtenir des informations de localisation géographique pour un fuseau horaire spécifié. Il est souvent utilisé dans les scénarios où la géolocalisation est requise en fonction des données du fuseau horaire ou affiche des informations liées au fuseau horaire. Cet article analysera le format de données de retour de la fonction Timezone_Location_get () en détail et explore comment traiter ces données efficacement.
La fonction timezone_location_get () accepte un objet DateTimeZone en tant que paramètre et renvoie le tableau des informations de localisation géographique correspondant au fuseau horaire. L'utilisation spécifique est la suivante:
$timezone = new DateTimeZone('Asia/Shanghai');
$location = timezone_location_get($timezone);
print_r($location);
La fonction renvoie un tableau associatif à une structure similaire à:
Array
(
[country_code] => CN
[latitude] => 31.22222
[longitude] => 121.45806
[comments] => Shanghai
)
Country_code : Country ISO 3166-1 Alpha-2 Code de deux lettres.
Latitude : la latitude, nombre de points flottants, unité en degrés du point central de ce fuseau horaire.
Longitude : la longitude, le nombre de points flottants, l'unité en degrés au point central de ce fuseau horaire.
Commentaires : Une brève description du fuseau horaire, généralement le nom principal de la ville.
Dans les applications pratiques, un traitement ultérieur de ces données est souvent nécessaire, comme:
Convertir le format des coordonnées (convertir entre le degré et la minute et le deuxième)
Calculer la distance basée sur la latitude et la longitude
Rechercher le nom ou le logo du pays en fonction du code du pays
function decimalToDMS($decimal) {
$degrees = floor($decimal);
$minutes = floor(($decimal - $degrees) * 60);
$seconds = round((($decimal - $degrees) * 60 - $minutes) * 60, 2);
return "{$degrees}°{$minutes}'{$seconds}\"";
}
$latDMS = decimalToDMS($location['latitude']);
$lngDMS = decimalToDMS($location['longitude']);
echo "Latitude: $latDMS, Longitude: $lngDMS";
function haversineDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6371; // Rayon de la Terre,L'unité est des kilomètres
$dLat = deg2rad($lat2 - $lat1);
$dLng = deg2rad($lng2 - $lng1);
$a = sin($dLat / 2) * sin($dLat / 2) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) *
sin($dLng / 2) * sin($dLng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
return $earthRadius * $c;
}
// Exemple:Calculez la distance entre Shanghai et Pékin
$beijing = ['latitude' => 39.9042, 'longitude' => 116.4074];
$distance = haversineDistance($location['latitude'], $location['longitude'], $beijing['latitude'], $beijing['longitude']);
echo "La distance entre Shanghai et Pékin est à propos {$distance} kilomètre";
Country_code peut être converti au nom complet du pays via un tableau simple ou une bibliothèque tierce:
$countryNames = [
'CN' => 'Chine',
'US' => 'USA',
'JP' => 'Japon',
// Peut être élargi en fonction des exigences
];
$country = $countryNames[$location['country_code']] ?? 'Pays inconnu';
echo "Pays du fuseau horaire:$country";
Les informations géographiques fournies par la fonction Timezone_Location_get () sont simples et intuitives, et convient pour obtenir rapidement les coordonnées géographiques et les codes de pays correspondant au fuseau horaire. En combinant la conversion de coordonnées simples et les calculs géographiques, il peut répondre à une variété de besoins d'informations géographiques et de traitements de traitement.
<?php
$timezone = new DateTimeZone('Asia/Shanghai');
$location = timezone_location_get($timezone);
function decimalToDMS($decimal) {
$degrees = floor($decimal);
$minutes = floor(($decimal - $degrees) * 60);
$seconds = round((($decimal - $degrees) * 60 - $minutes) * 60, 2);
return "{$degrees}°{$minutes}'{$seconds}\"";
}
$latDMS = decimalToDMS($location['latitude']);
$lngDMS = decimalToDMS($location['longitude']);
echo "Informations géographiques du fuseau horaire:\n";
echo "Code du pays: " . $location['country_code'] . "\n";
echo "latitude: $latDMS\n";
echo "longitude: $lngDMS\n";
echo "Remarque: " . $location['comments'] . "\n";
// Exemple:Calculez la distance d'un autre emplacement
function haversineDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6371;
$dLat = deg2rad($lat2 - $lat1);
$dLng = deg2rad($lng2 - $lng1);
$a = sin($dLat/2) * sin($dLat/2) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) *
sin($dLng/2) * sin($dLng/2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
return $earthRadius * $c;
}
$beijing = ['latitude' => 39.9042, 'longitude' => 116.4074];
$distance = haversineDistance($location['latitude'], $location['longitude'], $beijing['latitude'], $beijing['longitude']);
echo "La distance entre Shanghai et Pékin est à propos {$distance} kilomètre\n";