Recommended Posts

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

 

 

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

 

Ранее это делалалось вроде в realty_on_map.tpl, а теперь что-то у меня не получается изменить состав информации.

 

Если конкретней, то я хочу перед городом выводить категорию объявления, например 2-комн, 1-комнт, и т.д.

 

Спасибо.

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


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

Если нужен доступ к тому, что выводится при наведении на маркер в карте по урлу /map, тогда это не realty_on_map.tpl (это вывод по клику на маркере)

Это нужен файл map.tpl

Там есть такой кусок кода

for(var o=0; o<objects.length; o++){}

Это перебор объектов и нанесение маркеров.

В нем, внутри есть инициализация маркера

var marker = new google.maps.Marker({    icon: {url: estate_folder + '/template/frontend/agency/img/home_small.png'},    position: latlng,     map: map,    title: objects[o].title});

Вот то, что указывается в title - это и есть подписка маркера, которая показывается при наведении. А в objects содержится некоторая информация об объектах (не вся). Можете перед циклом перебора объектов дописать console.log(objects); и в хроме, через панель яваскрипта посмотреть, что там доступно. Например имя категории доступно в поле 

 

type_sh"Жилая"

 

Тогда вам надо сменить title в конструкторе маркера на

title: objects[o].type_sh+'  '+objects[o].title

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


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

title: objects[o].type_sh+'  '+objects[o].title

 

Не подскажете, как добавить свое поле в массив?

На пример: в таблицу data есть колонка village. Это строковое значение. Как мне вывести его во всплывающем окне карты? http://prntscr.com/36byz5

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


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

Не подскажете, как добавить свое поле в массив?

На пример: в таблицу data есть колонка village. Это строковое значение. Как мне вывести его во всплывающем окне карты? http://prntscr.com/36byz5

objects[o].переменная  (вместо переменная - village)

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


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

А как сделать, чтобы

 

для одного раздела - Квартиры - был маркер синего цвета, а

для другого раздела - Магазины - был маркер красного цвета ?

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


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

Повторять только если очень нужно. Сложно!

 

1. Создаем локальный обработчик сеток.

/apps/system/lib/frontend/grid/grid_constructor.php копируем в /template/frontend/шаблон/main/grid/local_grid_constructor.php

2. Удаляем из него весь функционал, кроме function get_sitebill_adv_core()

3. В начале файла делаем замену

class Grid_Constructor extends SiteBill_Krascap { на class Local_Grid_Constructor extends Grid_Constructor {

4. В файле /template/frontend/realia_complex/main/main.php в фнкции main() после строк 

global $__site_title, $folder, $smarty; 

добавляем

require SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/grid/local_grid_constructor.php';$this->_setGridConstructor(new Local_Grid_Constructor());

5. Создаем файл

/template/frontend/agency/js/realtymap_markers_config.js
 
6. Заполняем его 
var RM_Custom_Markers = {icon_mark_1: {icon: estate_folder+'/template/frontend/agency/img/icon1.png',size: [32, 37],offset: [-16, -37]},icon_mark_2: {icon: estate_folder+'/template/frontend/agency/img/icon2.png',size: [32, 37],offset: [-16, -37]},}

icon_mark_1, icon_mark_2 произвольные метки маркеров. могут содержать буквы-цифры и подчеркивание

. Само название могут иметь произвольное.

icon: estate_folder+'/template/frontend/agency/img/icon2.png', - путь к картинке иконки

size: [32, 37], - размер иконки (физический) в пикселях. Иконки должны быть в размер вывода маркера. Этот параметр указывать явно - то ли гугль, то ли яндекс без него начинают халтурить

offset: [-16, -37] - смещение "нулевой" точки иконки (верхнего левого угла картинки иконки) от места, на которое на карте должна указывать иконка. Зависит от того, что нарисовано на иконке.

 

Содаете набор вот таких вот параметров под свои категории. Что бы не путаться можете называть их согласно ид пунктов структуры = icon_mark_3465, icon_mark_13

 

7. Подключаем этот файл в /template/frontend/agency/header.tpl как обычный скрипт

<script type="text/javascript" src="{$estate_folder}/template/frontend/{$current_theme_name}/js/realtymap_markers_config.js"></script>

8. Возвращаемся к /template/frontend/шаблон/main/grid/local_grid_constructor.php

9. Находим в оставшемся в нем контенте блок

if($geodata && count($ra)>0){...}

Внутри него идет формирование данных для георисования.

...if(isset($d['number']) && $d['number']!='' && $d['number']!=0){$address[]=$d['number'];}if(isset($d['price'])){$address[]=$d['price'];}

После этого добавляем 

$gdata[$k]['topic_id']=$d['topic_id'];

Опускаемся еще ниже, до непосредственного формирования данных для карты

 
$geoobjects_collection=array();
    if(count($gdata)>0){
    foreach ($gdata as $gd){
    $gc=$gd['geo_lat'].'_'.$gd['geo_lng'];
    if(isset($geoobjects_collection[$gc])){
    $geoobjects_collection[$gc]['html'].=$gd['html'];
    $geoobjects_collection[$gc]['count']++;
    }else{
    if($gd['topic_id']==44){
    $geoobjects_collection[$gc]['icon']='icon_mark_44';
    }
    $geoobjects_collection[$gc]['lat']=$gd['geo_lat'];
    $geoobjects_collection[$gc]['lng']=$gd['geo_lng'];
    $geoobjects_collection[$gc]['html']=$gd['html'];
    $geoobjects_collection[$gc]['count']=1;
    }
    }
    }

тут я красным показал, что добавить.

 

 

Вот вроде бы и все. Если попробуете, но не получится, пишите.

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


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

Не нашел в файле grid_constructor.php (local_grid_constructor.php)  function get_sitebill_adv_core()

Посмотрите обновления, у вас все обновлено?

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


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

Посмотрите обновления, у вас все обновлено?

 

Обновил, все получилось, большое спасибо

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


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

Обновил, все получилось, большое спасибо

 

1. Размеры маркеров в size: [N, M], лучше указывать явно во избежании неожиданностей. Т.е. если вы используете маркеры из набора реалии, то

size: [42, 57]

2. Оффсеты от точки указания offset: [-16, -37] аналогично. Для маркера реалия(как и для подавляющего большинства общеупотребительных маркеров) это половина ширины по горизонтали и высота, так как "точка указания" маркера расположена внизу по центру иконки маркера 

offset: [-21, -57]

3. Красный маркер вы делали перекрашивая синий? В наборе реалии есть готовый красный маркер в папке \template\frontend\realia\img\markers\

Может лучше использовать его или маркеры из коллекций http://mapicons.nicolasmollet.com/ что бы соблюсти единство стилей?

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


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

Здравствуйте, не помогает просто дописать "realty_geo_data[o].price". В консоле есть только 3 параметра по умолчанию, как туда добавить свои http://gyazo.com/8005ef3156ad70beda6d8fbb41510101? Мой код: http://gyazo.com/d53476312fd79f3de17a1d093ef8f326, карта Яндекс, шаблон agency, система была месяц назад скачана. Редактирую тот код, что вставлен в шаблон realty_grid.tpl . Также еще 2 вопроса возникают:

1. Как сделать 2 разные карты, на которые объекты наносятся автоматически? Одна - для аренды, вторая - для продажи. На одной - объекты только в категории аренды, на другой - объекты только в категории продажа.

 

2. Как сделать раскрывающуюся карту? Методы, описанные здесь - https://tech.yandex.ru/maps/doc/jsapi/1.x/articles/tasks/map-docpage/- не работают. Если делать по стандартной схеме "Скрытого div", то приходим к такому результату http://gyazo.com/b5e1409c1a8d52cd67356aab1d535076.

 

Спасибо!

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


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

2. Как сделать раскрывающуюся карту?

 

Я делаю следующим образом.

1. внедряю в шаблон контейнер с абсолютным позиционированием и left: -100000px и размерами в размер места, в котором она должна бы быть

2. ставлю на него однозначный id

3. далее отслеживаю момент открытия скрытого дива, либо методами апи, если это искаропочные табы, либо в своем методе, если открывашку пишу сам.

4. по событию проверяю есть ли внутри раскрываемого блока элемент с идешкой блока карты. если есть, то открываю его и все. если нет, то ловлю этот блок из-за края экрана, меняю позиционирование на relative и перемещаю его в мой открываемый блок. и после этого разрешаю открыть блок.

 

 

1. Как сделать 2 разные карты

 

В целом нужно сформировать два набора данных под них. а дальше просто два раза вызвать рисовальщик на двух разных контейнерах. Либо скриптом сначала разобрать общие данные на предмет принадлежности к аренде-продачже и потом опять нарисовать две карты. Но тут нужно иметь этот признак в данных.

 

 

В консоле есть только 3 параметра по умолчанию

 

 

Напомните, что это за карта?

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


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

Я делаю следующим образом.

1. внедряю в шаблон контейнер с абсолютным позиционированием и left: -100000px и размерами в размер места, в котором она должна бы быть

2. ставлю на него однозначный id

3. далее отслеживаю момент открытия скрытого дива, либо методами апи, если это искаропочные табы, либо в своем методе, если открывашку пишу сам.

4. по событию проверяю есть ли внутри раскрываемого блока элемент с идешкой блока карты. если есть, то открываю его и все. если нет, то ловлю этот блок из-за края экрана, меняю позиционирование на relative и перемещаю его в мой открываемый блок. и после этого разрешаю открыть блок.

 

 

 

В целом нужно сформировать два набора данных под них. а дальше просто два раза вызвать рисовальщик на двух разных контейнерах. Либо скриптом сначала разобрать общие данные на предмет принадлежности к аренде-продачже и потом опять нарисовать две карты. Но тут нужно иметь этот признак в данных.

 

 

 

Напомните, что это за карта?

Карта Яндекс используется

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


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

Карта Яндекс используется

 

Не) в смысле карта на главной, карта с сеткой или что-то другое. по функционалу, а не по провайдеру.

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


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

Просто скрипт был вставлен на страницу realty_grid, по умолчанию там находится. Как узнать, что за карта?

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


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

Вообще желательно вывести карту на отдельную страницу, не в рамках этого файла. И уже там со всем работать. 

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


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

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

Подходит?

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


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

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

Подходит?

Да, идеально, если в этот список будут попадать все объекты из раздела  "аренда"/"продажа", а не только с первой страницы (т.е. если у нас 12 страниц, которые надо перелистывать, нужно, чтобы отображались всегда все объекты, а не только со страницы 1, когда мы на ней находимся, не только со страницы 2, и т.д.)

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


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

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

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

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

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

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

Войти

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

Войти сейчас