адрес от широты и долготы в адрес - PullRequest
0 голосов
/ 24 октября 2018

Может ли кто-нибудь помочь мне получить адресный текст по широте и долготе, оба загружать из базы данных?Также мне нужно вставить адрес обратно в базу данных с соответствующими координатами.

<?php    
// Opens a connection to a MySQL server

$con = new mysqli($servername, $username, $password, $database);


$result = mysqli_query($con,'SELECT * FROM table_name ORDER BY id DESC');


while ($row = @mysqli_fetch_assoc($result)){

  $latitude=  $row['latitude']. '  ';
  $longitude=  $row['longitude']. '  ';

}

?>

Есть ли способ получить адрес и вставить его в течение некоторого времени, чтобы он получил адрес и отправил его обратно?Любая помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

То, что вы хотите сделать, называется обратным геокодированием, переводом местоположения на карте в понятный человеку адрес.

Если вы делаете это в JavaScript, вам понадобится lat и long (что вы упомянули)у вас уже есть) и ключ API .С их помощью вы можете в основном выполнить запрос GET, используя приведенный ниже URL-адрес с требуемым значением lat, long и ключом API.

const lat = 'LAT_COORDS_STRING';
const lng = 'LNG_COORDS_STRING';
const apiKey = 'MY_API_KEY_STRING'

const url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${apiKey}`;

Приведенный выше запрос вернет JSON (см. Ниже), который можно проанализировать и извлечьнеобходимая информация (может быть, поле formatted_address - это то, что вам нужно).

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "277",
               "short_name" : "277",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Bedford Avenue",
               "short_name" : "Bedford Ave",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Williamsburg",
               "short_name" : "Williamsburg",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Brooklyn",
               "short_name" : "Brooklyn",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Kings",
               "short_name" : "Kings",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "11211",
               "short_name" : "11211",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.714232,
               "lng" : -73.9612889
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7155809802915,
                  "lng" : -73.9599399197085
               },
               "southwest" : {
                  "lat" : 40.7128830197085,
                  "lng" : -73.96263788029151
               }
            }
         },
         "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
         "types" : [ "street_address" ]
      },

  ... Additional results[] ...

Для получения более подробной информации посмотрите эту ссылку .

0 голосов
/ 24 октября 2018

Вы можете использовать API карт Google, ранее они разрешали анонимный доступ к своим API, но теперь вам нужно получить ключ API.https://developers.google.com/maps/documentation/geocoding/intro#Limits

<?php    
// Opens a connection to a MySQL server

$con = new mysqli($servername, $username, $password, $database);


$result = mysqli_query($con,'SELECT * FROM table_name ORDER BY id DESC');


while ($row = @mysqli_fetch_assoc($result)){

  $latitude=  $row['latitude']. '  ';
  $longitude=  $row['longitude']. '  ';

  $geolocation = $latitude.','.$longitude;

  // be sure to replace API key
  $request = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.$geolocation.'&sensor=false'.'key=YOUR_API_KEY'; 

  // retrieve data from url, GET REQUEST
  $file_contents = file_get_contents($request);

  // decode json object
  $json_decode = json_decode($file_contents);

  // return the json object of the first record, navigate to the address from here
  var_dump($json_decode);
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...