Карта с маркерами для каждого из которых своя иконка

Добра и Здравия! Подскажите, пожалуйста, есть ли такой компонент, который способен работать с яндекс или гугл картой, и при установке маркеров можно было б указать свою иконку на каждый из маркеров? Но помимо этого чтобы данные о координатах хранились в tv ресурсов, а иконки маркеров устанавливались на шаблоны или также в ресурсах. БлагоДарю за совет!

Решениеmodx.pro/solutions/4108-the-snippet-yandex-map-with-their-icons-markers-click-to-disable-certain-types-of-geo-objects/
Пашок
28 октября 2014, 11:25
modx.pro
1 666
0

Комментарии: 3

Сергей Скат
28 октября 2014, 18:04
+1
ну компанента насколько я знаю нет, можно написать плагин, который бы брал например адрес, геокодировал его и выдавал бы всю инфу, насчет гугла не знаю но яндекс 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();
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
3