Геокодирование и локация

В данной статье https://phpjs.ru/2017/03/21/google-geolocation-api/ я писал как получить координаты по ip и далее адрес по координатам., используя яндекс, гугл апи. Практика показала, что оба сервиса никчемны. Во-первых, апи гугл платно. Во вторых апи яндекса постоянно блочиться из-за каких то там их политик конфид-ти. Тем временем адрес и координаты можно получить 2 строчками кода.

function getIPYou(){
    if (!empty($_SERVER['HTTP_CLIENT_IP'])){
        //check ip from share internet
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        //to check ip is pass from proxy
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;    
}

$city = json_decode(file_get_contents('http://ip-api.com/json/'.getIPYou() . '?lang=ru'), true);

в ответе даже адрес уже есть

array(14) {
  ["status"]=>
  string(7) "success"
  ["country"]=>
  string(12) "Россия"
  ["countryCode"]=>
  string(2) "RU"
  ["region"]=>
  string(2) "TA"
  ["regionName"]=>
  string(18) "Татарстан"
  ["city"]=>
  string(31) "Набережные Челны"
  ["zip"]=>
  string(6) "423822"
  ["lat"]=>
  float(55.7866)
  ["lon"]=>
  float(52.4385)
  ["timezone"]=>
  string(13) "Europe/Moscow"
  ["isp"]=>
  string(24) "JSC "ER-Telecom Holding""
  ["org"]=>
  string(51) "CJSC "ER-Telecom Holding" Naberezhnye Chelny branch"
  ["as"]=>
  string(30) "AS42116 JSC ER-Telecom Holding"
  ["query"]=>
  string(11) "95.78.20.39"
}

Геокодирование

$latlng = '53.1813,50.1218';
$city = file_get_contents("https://geocode.xyz/$latlng?geoit=json");

ответ

Array
(
    [statename] => Array
        (
        )

    [distance] => 0.073
    [elevation] => 41
    [osmtags] => Array
        (
            [wikidata] => Q4178963
            [boundary] => administrative
            [name] => Железнодорожный район
            [type] => boundary
            [admin-level] => 9
        )

    [state] => RU
    [latt] => 53.18175
    [city] => Samara
    [prov] => RU
    [geocode] => SAMARA-NNBVZ
    [geonumber] => 8481645241783
    [country] => Russian Federation
    [stnumber] => Array
        (
        )

    [staddress] => Нечаевская улица
    [inlatt] => 53.18130
    [alt] => array ...

    [timezone] => Europe/Samara
    [region] => Samara Oblast
    [postal] => 443041
    [poi] => array ...

    [longt] => 50.12260
    [remaining_credits] => Array
        (
        )

    [confidence] => 0.9
    [inlongt] => 50.12180
    [class] => residential
    [altgeocode] => TASHM-NNBVZ
)

Leave a comment

Your email address will not be published.


*