получить координаты например от Яндекса

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

получить координаты например от Яндекса

Сообщение asisdes »

Доброго дня!

можно ли как-то получить координаты от яндекса в автоматичексом режиме по адресу
т№е№ у мен яесть База с адресами типа Алматы, ул Пушкина, 140
но записей много, а координат нет,
Ни кто не встерчал скрипт который мог бы возвращать по запросу координаты?

http://api.yandex.ru/maps/tools/getlonglat/

нашел такой инструмент, но вручную капец ка кне хочеться перебирать
Изображение
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получить координаты например от Яндекса

Сообщение dmg »

заинтересовался ;)
в чем проблема?
посмотрел http://api.yandex.ru/maps/doc/geocoder/ ... amples.xml
написал

Код: Выделить всё

<?php
$ask = 'Алматы, ул Пушкина, 140';
$url = 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode='.$ask;
$res = file_get_contents (  $url);
print_r ( json_decode( $res));
 
осталось только правильно составить запрос и получить минимальный результат.
толко не забывайте, что там ограничение на количество запросов и рекомендуется сохраять результат в БД.
ps. php должен быть собран с curl скорее всего и незапрещен в php.ini
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

Re: получить координаты например от Яндекса

Сообщение asisdes »

Код: Выделить всё

<?php
$params = array(
    'geocode' => 'Алматы, пр.Гагарина,135ж', // адрес
    'format'  => 'json',                          // формат ответа
    'results' => 1,                               // количество выводимых результатов
    'key'     => 'AML1CVMBAAAAbQy7PwIA97S9R_k8lCiLwoDS37kFxQWjVR4AAAAAAAAAAACPBQZS73AHrmVL3hvBz1zsELf0Uw==',                           // ваш api key
);
$response = json_decode(file_get_contents('http://geocode-maps.yandex.ru/1.x/?'.http_build_query($params, '', '&')));
//$response = 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode='.$ask;
if ($response->response->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found > 0)
{
    $text = $response->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos;
    $newText = explode(' ' , $text);
    echo $text; 
    echo "<br>";
    echo $newtext[0];
    echo "<br>";
    echo $newtext[1];
}
else
{
    echo 'Ничего не найдено';
}
?>
На ковырял такой код в интернете, вроде работает
Хотел еще спросить
почему не работает функция explode, хотел разбить координаты и в разные ячейки писать,
а она не разбивается.

и как еще красиво оформить что бы он на ограничения не попал по запросам. т.е. может например брать по 10 записей ?!
Изображение
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получить координаты например от Яндекса

Сообщение dmg »

мой тест работает

Код: Выделить всё

cat test.php                                                            
<?php
$ask = 'Алматы, ул. Пушкина, 140';
$url = 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode='.$ask;
$res = json_decode(file_get_contents (  $url));
$lats = $res->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos;
echo $lats;
$lats = explode( ' ' , $lats );
print_r( $lats);

php test.php                                                                           
76.953667 43.255432
Array
(
    [0] => 76.953667
    [1] => 43.255432
если бы вы включили просмотр ошибок, то увидели, что переменная newtext - Undefined variable.
следите за регистром в именах переменных.
по второму вопросу. изучайте на тему cron и скриптов или очередей.
cron и скрипты это OC зависимые вещи, а про очереди не скажу - не пользовал - поищите на форуме - были вопросы.
IS250
Сообщения: 1
Зарегистрирован: 2019.08.24, 09:36

Re: получить координаты например от Яндекса

Сообщение IS250 »

Автор вопроса писал, что "записей много", т.е. АДРЕСОВ МНОГО
А приведённые коды выдают только лишь один адрес:
И 'geocode' => 'Алматы, пр.Гагарина,135ж',
И $ask = 'Алматы, ул. Пушкина, 140';
Как сделать вывод нескольких адресов???
Спасибо!
Ответить