Карта с маркерами для каждого из которых своя иконка
Добра и Здравия! Подскажите, пожалуйста, есть ли такой компонент, который способен работать с яндекс или гугл картой, и при установке маркеров можно было б указать свою иконку на каждый из маркеров? Но помимо этого чтобы данные о координатах хранились в tv ресурсов, а иконки маркеров устанавливались на шаблоны или также в ресурсах. БлагоДарю за совет!
Решение — modx.pro/solutions/4108-the-snippet-yandex-map-with-their-icons-markers-click-to-disable-certain-types-of-geo-objects/
Решение — modx.pro/solutions/4108-the-snippet-yandex-map-with-their-icons-markers-click-to-disable-certain-types-of-geo-objects/
Комментарии: 3
ну компанента насколько я знаю нет, можно написать плагин, который бы брал например адрес, геокодировал его и выдавал бы всю инфу, насчет гугла не знаю но яндекс API позволяет делать свои иконки, что то типа того
new_object.setOptions({
iconLayout: 'default#image',
iconImageHref: 'main/red_marker.png', // путь к иконке
})
вот пример моего плагина который берет адрес из тв, парсит ответ и записывает станции метро и округа (можно все что угодно) в ТВ параметры для дальнейшей фильтрации, сразу скажу, код ужасен но работает, если кто то поможет оптимизировать буду очень признателен <?php
$tv = $modx->getObject('modTemplateVar',array('name'=>'street')); // Получаем значение всех ТВ
$adres_value = $tv->getValue($id); // получаем id документа в котором находимся
$adres_output = $tv->renderOutput($id);// рендерим содержимое ТВ
$adress1=urlencode($adres_output);
$url="http://geocode-maps.yandex.ru/1.x/?geocode=".$adress1."&kind=metro&results=200";
$content=file_get_contents($url); // получаем страницу с координатами
preg_match('/<pos>(.*?)<\/pos>/',$content,$point); // вырезаем нужные нам координаты
$coordinaty=explode(' ',trim(strip_tags($point[1])));
//координаты объекта
$coords_xy = $coordinaty[0].','.$coordinaty[1];
$metro ="http://geocode-maps.yandex.ru/1.x/?geocode=".$coords_xy."&kind=metro&results=200"; // тут мы формируем http запрос на сервер для получения xml с ответом с метро
$metro_xml = file_get_contents($metro);
preg_match('/<PremiseName>(.*?)<\/PremiseName>/',$metro_xml,$metro_point); // вырезаем нужные нам координаты для метро
$metro_coord=explode(' ',trim(strip_tags($metro_point[1])));
$okrug ="http://geocode-maps.yandex.ru/1.x/?geocode=".$coords_xy."&kind=district&results=1"; // тут мы формируем http запрос на сервер для получения xml с ответом с округом
$okrug_xml = file_get_contents($okrug);
preg_match('/<DependentLocalityName>(.*?)<\/DependentLocalityName>/',$okrug_xml,$okrug_point); // вырезаем нужные нам координаты для Округов
$okrug_coord=explode(' ',trim(strip_tags($okrug_point[1])));
$resource->setTVValue('okrug',$okrug_coord[0].' '.$okrug_coord[1].' '.$okrug_coord[2] ); // записываем значение округа в ТВ шку
$resource->setTVValue('metro',$metro_coord[1].' '.$metro_coord[2].' '.$metro_coord[3] );// записываем метро в Твшку
$resource->save();
Спасибо. Написал свой сниппет — modx.pro/solutions/4108-the-snippet-yandex-map-with-their-icons-markers-click-to-disable-certain-types-of-geo-objects/
оформляйте в пакет и выкладывайте )
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.