PHP Geolocation (Улица -> Lat-Long)

Мне нужен некоторый тип PHP thingie, так что я могу ввести несколько уличных адресов
(например, 123 Fake Street, Faketown, FA, 98765), а затем он даст мне координаты (широту и долготу) этих адресов.
Мне нужно, чтобы это было полностью динамичным (поскольку я буду извлекать эти адреса из базы данных).

Где я могу найти что-то, что может это сделать?

Процесс принятия адреса и превращения его в lat / lng называется «Геокодирование». Я бы посмотрел API Google Geocode.

https://developers.google.com/maps/documentation/geocoding/

Я работаю для 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#" } }