Клуб API Карт

Массовое размещение объектов на карте

Пост в архиве.

Несколько дней читал существующие темы и документацию, но так и не удалось получить географические координаты для группы объектов с целью дальнейшего вывода их на карту.

Выводить объекты по координатам я научился, но сейчас координаты беру вручную, через инструмент получения координат, а мне необходимо разместить на карте более 200 объектов (с точностью до дома), так что задача достаточно трудоемкая.

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

В лучшем случае я получаю такое:

Warning:
file_get_contents(http://geocode-maps.yandex.ru/1.x/?geocode=корректный_адрес&key=корректный_ключ):
failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

 

Поделитесь, пожалуйста, опытом: как лучше обработать список объектов и передать его затем для размещения на карте?

8 комментариев
Александр Новиков
28 января 2016, 07:42
В общем там концепция равильная изложена. А насчет ошибки - возможно у вас на хостинге функция file_get_contents заблокирована. Возмозны и другие проблемы - по такому кусочку кода вряд-ли олучится диагностировать.
Александр Новиков,
спасибо за ответ.

file_get_contents вряд ли
заблокирована, ведь перед вызовом этой функции нормально срабатывает
fopen, а если верить найденному в интернете:
Эти функции работают с удаленными хостами только при включенной
директиве allow_url_fopen в php.ini
Как правило хостеры ее отключают. По
крайней мере умные.
На моем хостинге по php info я вижу
разрешение на allow_url_fopen в обоих случаях (Local Value и Master
Value).

Что же касается кода, я использую именно тот код, который
указал автор в своем
сообщении
(лишь немного изменил центровку карты под свои адреса).
Комментарии к сообщению читал, модифицировать запрос пробовал - не
помогло.
А полноценного кода у меня просто нет: за неимением опыта, я
пытаюсь получить геоданные на все свои объекты, а затем уже руками
прописать их в один из найденных в обсуждении примеров размещения
объектов.

С частью объектов, чьи геоданные я получил руками, мне
это удалось, а как оно сработает с двумястами объектами я еще не знаю,
поскольку не могу собрать необходимые данные, поэтому прошу
по-возможности поделиться каким-нибудь заведомо рабочим примером, чтоб
уже на его анализе попытаться написать что-то свое.

Полагаю, это
могло бы помочь не только мне.
Александр Новиков
28 января 2016, 07:42
fopen у вас работает с локальными файлами и поэтому доказательством служить не может... Вот еще вариант кода: http://codepaste.ru/3053/ Его писал я и уже пару раз публиковал в клубе - вроде бы у всех работает правильно.
Я видел этот код, но у меня сейчас мозгов не хватит создать таблицу и правильно назначить типы данных.
Для человека, который слабо владеет php и sql (и еще слабее api), есть только два варианта: либо найти более-менее готовый пример и переточить его под свои нужды, либо обратиться за помощью к профессионалу. А учитывая некоммерческую сторону моего проекта, последний вариант выглядит несколько сомнительным.
На детальное изучение документации просто уже не остается времени.

В любом случае спасибо за советы!

P.S. Есть, конечно, еще директивы showAddress и MultiplyGeocoder, но у меня рука не поднимется выдергивать две сотни адресов таким способом. Судя по обсуждению, это варварство.
Александр Новиков
28 января 2016, 07:42
200 адресов... базу вы создавать не хотите (или не умеете). проект некоммерческий... на изучение документации у вас времени нет... это будет мертворожденный проект (если вообще будет). не тратьте свое время на ерунду... либо делайте все правильно -- и проект получится и себе опыт наработаете
Я пытаюсь создать проект в помощь своим сотрудникам, осуществляющим обслуживание и ремонт специального оборудования связи. Мертворожденным он не будет. Если, конечно, будет создан именно в электронном виде, а не в виде бумажной карты с цветными маркерами-флажками.
тестовые принты,
try - catch,
firebug,
обычно позволяют локализовать строчку кода где, что-то работает не так.

Если проблема в корректности запроса. То приведите пример реального запроса который сгенерировался.
Анастасия
28 января 2016, 07:42
У меня возникала та же ошибка. Исправила, используя функцию urlencode() для адреса. На php это будет выглядеть примерно так:
$adr=urlencode('город Москва, Тверская улица, дом 18, корпус 1'); $file='http://geocode-maps.yandex.ru/1.x/?geocode='.$adr.'&key='.$APIkey;
Спасибо NeWMaN за пример, в котором подсмотрела решение:)