С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
Яндекс API

Как узнать координаты точки?

10.11.2017, 18:22. Показов 3911. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Ребята, у меня есть адрес, помещенный в переменную.
Нужно в базу данных заполнить координаты этого адреса.
Как можно достать координаты с помощью яндекс апи?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2017, 18:22
Ответы с готовыми решениями:

Как узнать координаты курсора мыши
Как узнать положение курсора мыши на страницу?

Как узнать позицию координаты выделенного текста?
Возможно узнать позицию выделенного текста? То есть "test test" вернёт 0. А "test test" вернёт 5. Пытался сделать так, но...

Как можно средствами JavaScript узнать координаты курсора?
Подскажите пожалуйста, как можно средствами JavaScript узнать координаты курсора?

18
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
13.11.2017, 10:29
Если ещё актуально:
JavaScript
1
2
3
4
5
6
7
8
var address = 'Москва, ул. Тверская, д. 7';
$.ajax({
  method: 'GET',
  url: 'https://geocode-maps.yandex.ru/1.x/?geocode='+address+'&format=json'
}).then(function(json){
  var feature = json.response.GeoObjectCollection.featureMember[0];
  if (!feature) console.log('Не удалось распознать адрес'); else console.log(feature.GeoObject.Point.pos);
});
Добавлено через 28 секунд
Не забудьте подключить jQuery, либо перепишите код без него.
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
15.11.2017, 23:16  [ТС]
Balanaar, спасибо, правильно ли я понял, что весь ваш код нужно засунуть внутрь функции
JavaScript
1
2
3
function init() {
// тут ваш код
}
хотелось бы конечный результат получить в виде: координату х в одной переменной, а координату y в другой

Добавлено через 29 минут
Balanaar, с первым вопросом разобрался, осталось по переменных раскидать координаты, и еще получается такая ситуация, что функция выдает сначала y, затем х, поэтому при вставке в яндекс карты выдает совсем другую местность
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
16.11.2017, 09:35
Лучший ответ Сообщение было отмечено proger10 как решение

Решение

proger10, эти величины называются широта и долгота. Общепринято сначала называть широту, а затем долготу. Однако у Яндекса по каким-то неизвестным причинам некоторые методы JS API и других API возвращают координаты в обратном порядке. В таком случае просто поменяйте их местами.
JavaScript
1
2
3
4
5
6
7
8
var address = 'Москва, ул. Тверская, д. 7';
$.ajax({
  method: 'GET',
  url: 'https://geocode-maps.yandex.ru/1.x/?geocode='+address+'&format=json'
}).then(function(json){
  var feature = json.response.GeoObjectCollection.featureMember[0];
  if (!feature) console.log('Не удалось распознать адрес'); else console.log(feature.GeoObject.Point.pos.split(' ').reverse().join(' '));
});
1
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
16.11.2017, 22:43  [ТС]
Balanaar, спасибо!
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
18.11.2017, 00:27  [ТС]
Balanaar, возник еще один вопрос:
правильно ли я понял, что после того, как я получаю координаты в переменой points[i] я не могу ее передать в php, для того, что бы потом внести в БД вместе с остальными переменными (определенными раннее в php-коде)?

Я читал на эту тему, но понял, что сначала выполняется код php, потом перед выводом страницы в браузер выполняется javascript и после этого уже невозможно передать переменный в php т.к. он уже закончил свою работу.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function inits(){
    var address = 'Москва, ул. Тверская, д. 7';
    var points;
    $.ajax({
      method: 'GET',
      url: 'https://geocode-maps.yandex.ru/1.x/?geocode='+address+'&format=json'
    }).then(function(json){
      var feature = json.response.GeoObjectCollection.featureMember[0];
      if (!feature) console.log('Не удалось распознать адрес');
      else points = feature.GeoObject.Point.pos.split(' ');
      alert(points[1]+"+"+points[0]);
    });
}
var n=1;
var addr = [];
addr[1] = address[0].concat(address[1]);
inits();
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
18.11.2017, 01:10
Цитата Сообщение от proger10 Посмотреть сообщение
Я читал на эту тему
Не то вы читали. Читайте про AJAX.
AJAX - это, говоря простым языком, запрос на сервер без перезагрузки страницы. Вы можете отправить любой запрос на сервер с любыми параметрами и любым методом средствами JS. Сервер обработает полученный запрос и даже выдаст ответ. Причём страница не перезагрузится. AJAX используется повсеместно и является важнейшим аспектом в изучении JS.
Более того вы в коде выше осуществляете такой запрос. Вы запрашиваете с сервера Яндекс координаты, передав им в качестве GET-параметра адрес для обработки. Вы можете сделать то же самое со своим сервером.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function inits(){
    var address = 'Москва, ул. Тверская, д. 7';
    var points;
    $.ajax({
      method: 'GET',
      url: 'https://geocode-maps.yandex.ru/1.x/?geocode='+address+'&format=json'
    }).then(function(json){
      var feature = json.response.GeoObjectCollection.featureMember[0];
      if (!feature) console.log('Не удалось распознать адрес'); else {
        points = feature.GeoObject.Point.pos.split(' ');
        $.ajax({ // Отправить AJAX-запрос ...
          method: 'POST', // ... методом POST ...
          url: '/path/to/php/script.php', // ... на скрипт по этом адресу ...
          data: { // ... с параметрами ...
            points: points, // ... $_POST['points'] == [...] ...
            address: address // ... $_POST['address'] == 'Москва, ул. Тверская, д. 7'
          }
        }).then(function(response) {
          alert(response); // Показать результат обработки
        });
      }
    });
}
Ваш php-файл по адресу /path/to/php/script.php запустится на сервере, а в суперглобальном массиве $_POST будут содержаться переданные вами параметры запроса:
PHP
1
2
3
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$mysqli->query("INSERT INTO table (address, long, lat) VALUES ('".$_POST['address']."', '".$_POST['points'][1]."', '".$_POST['points'][0]."')");
echo 'Координаты для адреса '.$_POST['address'].' успешно добавлены';
Добавлено через 2 минуты
P.S. Если вам нужно запрашивать координаты с сервера Яндекс для того, чтобы занести их в БД - проще делать запрос сразу со стороны сервера, а не городить 2 вложенных AJAX-запроса.

Добавлено через 1 минуту
Подробнее о jQuery.ajax() (на английском)
http://api.jquery.com/jquery.ajax/
1
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
18.11.2017, 18:06  [ТС]
Balanaar, спасибо за код и за объяснение. Код работает в файле js, и alert выводит все правильно, но вот в php вот такой кусок почему-то выводит NULL:
Цитата Сообщение от Balanaar Посмотреть сообщение
echo 'Координаты для адреса '.$_POST['address'].' успешно добавлены';
Но вот я подумал, что можно в начале принять эти данные от js в php в переменную таким путем:
PHP
1
$addr = htmlspecialchars($_POST['address']);
или таким
PHP
1
$addr = $_POST['address'];
потом сделать вывод такой:
PHP
1
echo $addr;
но вот так тоже не выводит.

Цитата Сообщение от Balanaar Посмотреть сообщение
P.S. Если вам нужно запрашивать координаты с сервера Яндекс для того, чтобы занести их в БД - проще делать запрос сразу со стороны сервера, а не городить 2 вложенных AJAX-запроса.
Хорошая идея, я думал, что яндекс апи работает только с js, если не трудно, то можете пожалуйста показать как сразу с php отправить запрос к яндексу и получить координаты заданного адреса, чтоб потом его вывести хотя бы вывести на экран (в БД засунуть уже просто будет после этого)?
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
20.11.2017, 00:29
Лучший ответ Сообщение было отмечено proger10 как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  $address = 'Москва, ул. Тверская, д. 7';
  if ($curl = curl_init()) {
    curl_setopt($curl, CURLOPT_URL, 'https://geocode-maps.yandex.ru/1.x/?geocode='.$address.'&format=json');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $out = curl_exec($curl);
    curl_close($curl);
    $json = json_decode($out, true);
    $feature = $json['response']['GeoObjectCollection']['featureMember'][0];
    if (!feature) echo 'Не удалось распознать адрес'; else {
      $points = $feature['GeoObject']['Point']['pos'];
      echo $points;
    }
  }
?>
1
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
20.11.2017, 22:35  [ТС]
Balanaar, благодарен за Ваш код.
У меня почему-то отказывается работать, выдает такую ошибку:
500 Internal Server Error
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
20.11.2017, 22:43
Поместите код ниже в начало вашего php-файла. Какой ответ будет?
PHP
1
2
ini_set("display_errors",1);
error_reporting(E_ALL);
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
20.11.2017, 23:27  [ТС]
Balanaar, блин, я сам не догадался посмотреть таким образом, но, к сожалению, я бы вряд ли все равно смог понять в чем ошибка.
Выдает следующее:
Fatal error: Uncaught Error: Call to undefined function curl_init() in /var/www/html/main/proba.php:9 Stack trace: #0 {main} thrown in /var/www/html/main/proba.php on line 9

Как я понял, вызов неопределенной функции curl_init() в 9ой строке, сама строка - условие:
PHP
1
2
3
if ($curl = curl_init()) {
...
}
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
20.11.2017, 23:33
Есть доступ к php.ini? У вас отключен curl. Если есть - найдите там строку
Code
1
;extension=php_curl.dll
, уберите точку с запятой, сохраните и перезапустите сервер.
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
20.11.2017, 23:48  [ТС]
Balanaar, все сделал, ошибка не ушла
Изображения
 
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
20.11.2017, 23:51
Странно. Сервер не забыли перезапустить? Палочка в конце это курсор?
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
20.11.2017, 23:53  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Сервер не забыли перезапустить?
нет, перезапустил несколько раз (service nginx restart,service nginx start,service nginx stop).
Цитата Сообщение от Balanaar Посмотреть сообщение
Палочка в конце это курсор?
да, курсор
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
20.11.2017, 23:55
Возможно он у вас вообще не установлен. Вбейте в терминал следующее:
Code
1
sudo apt-get install php-curl
или
Code
1
sudo apt-get install php5-curl
Зависит от версии php. Не забудьте перезапустить сервер после этих действий.
1
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
21.11.2017, 00:02  [ТС]
Balanaar, все, теперь заработало, спасибо Вам огромное, от души!

P.S. Как оказалось, в Вашем коде есть небольшая описка в 10 строчке:
Вместо
if (!feature)
должно быть
if (!$feature)

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

Еще раз, спасибо Вам большое!
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.11.2017, 00:04
Да, действительно. Копировал код с JS. Забыл поправить.
Успехов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2017, 00:04
Помогаю со студенческими работами здесь

Как узнать координаты нужной точки рисунка?
Я новичок в программировании, не сочтите вопрос провокационным или вызванным ленью... Я нарисовал окружность и разделил ее на пять...

Как узнать координаты двумерной проекции трёхмерной точки?
Есть 12 линий с помощью которых нарисован куб в двумерном пространстве, т.е. каждая линия указывается 2-мя точками с координатами (x;y)....

Узнать экранные координаты точки
Есть камера, есть точка в трехмерном пространстве. Координаты точки известны. Есть матрица камеры и матрица проекции - перспективная. Как...

Узнать координаты точки эллипса, который находится под наклоном
Задание: Необходимо вычислить координаты красной точки. Известные данные: координаты центра эллипса относительно начала координат,...

Как найти координаты точки на прямой удаленной от заданной точки на х
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru