abushyk

Геокодинг без координат в просмотре

Recommended Posts

Для тех, кто пользуется шаблонами без поддержки геокодинга по адресу объявлений в просмотре.

Есть вариант с геокодингом и если есть желающий проверить на себе, то

 

1. Качаем тестовую версию библиотеки под карту http://my.digitalwerkstatt.ru/files/realtymap.rar

2. Распаковываем и заменяем им /apps/system/js/realtymap.js. Старый файл в этом месте сохраняем в сторонку для восстановления.

3. В шаблоне отвчающем за просмотр объявления (realty_view.tpl)

3.1. Находим вызов построителя карты

$(document).ready(function(){var RM=new RealtyMap();RM.initJSON('properties-map', loc_objects, map_type);});

3.2. Заменяем стандартный вызов на адаптированный

$(document).ready(function(){    var RM=new RealtyMap();    if(loc_objects.length==0){     RM.initGeocoded('property-map', rname, map_type, {defaultZoom: 8});    }else{     RM.initJSON('property-map', loc_objects, map_type, {defaultZoom: 8});    }});

суть в том, что если у нас не пришел готовый для вывода объект с координатами мы пробует отгеокодировать его через вызов RM.initGeocoded

Вызов RM.initGeocoded проводится с теми же самыми параметрами, что и стандартный RM.initJSON (кроме второго rname), поэтому, если у вас до правки в RM.initJSON передавались дополнительные параметры вроде картинки маркера или масштаба по-умолчанию, то их нужно оставить.

3.3. Создаем адрес под геокодирование. RM.initGeocoded вторым параметром принимает строку в виде адреса. Наша задача создать ее.

В начале файл шаблона добавляем

 

{assign var=x value=array()}{if $data.city_id.value_string ne ''}{append var=x value=$data.city_id.value_string}{/if}{if $data.district_id.value_string ne ''}{append var=x value=$data.district_id.value_string}{/if}{if $data.street_id.value_string ne ''}{append var=x value=$data.street_id.value_string}{/if}{if $data.number.value ne '' && $data.number.value ne '0'}{append var=x value=$data.number.value}{/if}{assign var=rname value=$x|implode:', '}

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

 

3.4. Перед блоком в котором мы вызывали RM.initGeocoded добавляем полученный адрес в скриптовые переменные

var rname='{/literal}{$rname}{literal}';$(document).ready(function(){    var RM=new RealtyMap();    ...

4. Жмем Ф5 в просмотре.

 

Решение тестовое. Про замеченные баги пишите в эту тему.

 

Для тех, кто запутается, тут http://pastebin.com/N4BvL5B9 ссылка на код-пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас