Перейти к содержимому


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


В теме одно сообщение

#1 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Ноябрь 2014 - 11:36

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

$xml = simplexml_load_file('http://geocode-maps.yandex.ru/1.x/?geocode=Таганрог, '.urlencode($line['Адрес стандартный']).'&results=1');
$line['Координаты']=str_replace(' ', ',', $xml->GeoObjectCollection->featureMember->GeoObject->Point->pos);

Если просто в браузер ввести, например http://geocode-maps.yandex.ru/1.x/?geocode=Таганрог,%20Инструментальная,%2023 , то адрес автоматически преобразуется в такой:
http://geocode-maps....%B0%D1%8F,%2023 и в результате откроется окно с xml, где можно увидеть всю необходимую информацию и откуда ее можно выдрать через str_replace(' ', ',', $xml->GeoObjectCollection->featureMember->GeoObject->Point->pos);

Но не получается ни так, ни так:
$line['Координаты']=$xml->GeoObjectCollection->featureMember->GeoObject->Point->pos;

Не срабатывает и такой алгоритм

echo "<iframe>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<title>Пример множественного геокодирования</title>

<!-- Сделаем броузеры ES5 friendly -->
<script src='/es5-shim/es5-shim.js' type='text/javascript'></script>

<script src='//yandex.st/jquery/1.8.0/jquery.min.js' type='text/javascript'></script>

<script src='//api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU' type='text/javascript'></script>

<!-- Класс множественного геокодирования -->
<script src='multi-geocoder.js' type='text/javascript'></script>
<script src='list-collection.js' type='text/javascript'></script>

<script type='text/javascript'>
ymaps.ready(function () {
var map = new ymaps.Map('map', {
center: [ 55.734046, 37.588628 ],
zoom: 9,
behaviors: ['default', 'scrollZoom']
});

var mGeocoder = new MultiGeocoder({ boundedBy : map.getBounds() });

// Геокодирование массива адресов и координат.
mGeocoder.geocode([
'Москва, Слесарный переулок, д.3',
'Люберцы, Октябрьский проспект д.143',
[ 55.734046, 37.588628 ],
'Мытищи, ул. Олимпийский проспект, владение 13, корпус А',
'Москва, 3-я Хорошовская улица д.2, стр.1',
'Москва, Нижний Сусальный переулок, д.5, стр.4'
])
.then(function (res) {
// Асинхронно получаем коллекцию найденных геообъектов.
map.geoObjects.add(res.geoObjects);
},
function (err) {
console.log(err);
});
});
</script>
</head>

<body>
<div id='map' style='width: 800px; height: 400px;'></div>
</body>

</html>
</iframe>
";

Что я делаю не так?

Если можно, приведите полный код обработки геозапроса с помещением координат в виде чисел в поля $line['lat'] и $line['lng']

А еще приведите описание корректного вывода в фрейме картинки, показывающей несколько статических точек и включение этой картинки в выходной документ, отсылаемый клиенту. Чтоб в итоге получалось нечто подобное: http://dimik.github....multi-geocoder/

Почему бы не подойти к вопросу системно и не сделать чекбокс "Геокодирование" в любой таблице, по нажатию которого нужно просто указать префикс (название города), ссылку на поле хранения адреса внутри населенного пункта, указанного в префиксе, и имена полей для указания широты и долготы. Далее система сама в автомате должна геокодировать координаты по мере ввода или изменения поля адреса. А при рассылке в шаблон можно будет сразу вставлять изображение карты указанием на системное имя, например "map". Еще можно сделать системную кнопку "показать на карте", чтобы выводить с подчиненной таблицы точки на карту. Можно сделать это по аналогии с календарем. Указал нужную таблицу, указал поле хранения адреса, указал префикс, указал какое поле выводить в хинте, какие поля в открываемом при нажатии балуне, цвет балуна, применяемый фильтр - и вот вы получаете а) шикарную визуализацию по любому параметру как одного объекта, так и группы; б) код ссылки, который можно вставлять в документ перед отправкой для отсылки клиентам этой картинки; в) код для вставки на сторонний сайт для демонстрации.

Представьте, насколь вы расширите функционал и сколько к вам прибежит новых клиентов!

Народ, поддержите!

Сообщение отредактировал Александр Пономарев: 11 Ноябрь 2014 - 13:02


#2 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 12 Ноябрь 2014 - 08:55

Просмотр сообщенияАлександр Пономарев (11 Ноябрь 2014 - 11:36) писал:

Если можно, приведите полный код обработки геозапроса с помещением координат в виде чисел в поля $line['lat'] и $line['lng']

http://clientbase.ru...%B5_google_maps
"...Сижу, паяю. CRM починяю..."
Мои разработки





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных