Геолокация PHP (Адрес улицы - >Широта) [закрыто]
Мне нужна какая-нибудь PHP-штука, чтобы я мог ввести несколько уличных адресов
(например,:
123 Фальшивая улица,
Faketown, FA,
98765)
, а затем он даст мне координаты (широту и долготу) этих адресов.
Мне нужно, чтобы это было полностью динамичным (так как я буду извлекать эти адреса из базы данных).
Где я могу найти что-то, что может это сделать?
2
2 answers
Процесс получения адреса и преобразования его в lat/lng называется "Геокодированием". Я бы посмотрел на API геокодирования Google.
4
Author: user2588667, 2013-08-16 21:29:41
Я работаю в SmartyStreets, поставщике API для проверки адресов. Наш API LiveAddress делает именно то, что вам нужно. Учетная запись может быть настроена бесплатно, и в нее входит 250 запросов в месяц. Вот некоторые примеры PHP-кода:
<?php
// Customize this (get ID/token values in your SmartyStreets account)
$authId = urlencode("raw ID here");
$authToken = urlencode("raw token here");
// Address input
$input1 = urlencode("3785 s las vegs av.");
$input2 = urlencode("los vegas,");
$input3 = urlencode("nevada");
// Build the URL
$req = "https://api.smartystreets.com/street-address/?street={$input1}&city={$input2}&state={$input3}&auth-id={$authId}&auth-token={$authToken}";
// GET request and turn into associative array
$result = json_decode(file_get_contents($req),true);
echo "<pre>";
print_r($result);
echo "</pre>";
?>
То, что выходит, выглядит так:
{
"input_index": 0,
"candidate_index": 0,
"delivery_line_1": "3785 Las Vegas Blvd S",
"last_line": "Las Vegas NV 89109-4333",
"delivery_point_barcode": "891094333992",
"components": {
"primary_number": "3785",
"street_name": "Las Vegas",
"street_postdirection": "S",
"street_suffix": "Blvd",
"city_name": "Las Vegas",
"state_abbreviation": "NV",
"zipcode": "89109",
"plus4_code": "4333",
"delivery_point": "99",
"delivery_point_check_digit": "2"
},
"metadata": {
"record_type": "H",
"zip_type": "Standard",
"county_fips": "32003",
"county_name": "Clark",
"carrier_route": "C024",
"congressional_district": "01",
"building_default_indicator": "Y",
"rdi": "Commercial",
"elot_sequence": "0119",
"elot_sort": "A",
"latitude": 36.10357,
"longitude": -115.17295,
"precision": "Zip9"
},
"analysis": {
"dpv_match_code": "D",
"dpv_footnotes": "AAN1",
"dpv_cmra": "N",
"dpv_vacant": "N",
"active": "Y",
"footnotes": "B#H#L#M#"
}
}
2
Author: mdwhatcott, 2013-08-16 23:55:28