Яндекс Карта 2,1

LG
На сайте с 17.01.2014
Offline
42
697

Добрый день, подскажите неграмотному) как мне сделать кластеризацию в данном коде? И заменить в балуне текст на свой из БД. Сейчас просто адрес прописан в балуне, адрес где стоит метка. Вот код ниже.

<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>

<div style="width: 100%; float:left; margin:0px 0 10px 0px">
<div id="itemMap" style="width: 100%; height: 380px;"></div>
</div>


<script type="text/javascript">


ymaps.ready(function () {


/* Создание экземпляра карты и его привязка
к контейнеру с id="YMapsID" */
var myMap = new ymaps.Map("itemMap", {
// Центр карты
center: [52.615643,39.601155],
// Коэффициент масштабирования
zoom: 8,
});



function showAddress(name, value) {
// Запуск процесса геокодирования
var myGeocoder = ymaps.geocode(
/* Строка с адресом, который нужно геокодировать */
value, {
/* Опции поиска: - область поиска */
boundedBy: myMap.getBounds(),
// - искать только в этой области
strictBounds: true,
// - требуемое количество результатов
results: 1
});

/* После того, как поиск вернул результат, вызывается callback-функция */
myGeocoder.then(function (res) {
/* Размещение полученной коллекции геообъектов на карте */
myMap.geoObjects.add(res.geoObjects);
},
// Обработка ошибки
function (error) {
alert("Возникла ошибка: " + error.message);
}

);


/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/




}

<?php
$addresses = array();
foreach($items AS $item) {
$addr = array();
if( ($item['s_city'] != '') && ($item['s_city'] != null) ) { $addr[] = trim($item['s_city']); }
if( ($item['s_address'] != '') && ($item['s_address'] != null) ) { $addr[] = trim($item['s_address']); }

$title = $item['s_title'];
$title = '<a href="'.osc_item_url_from_item($item, $locale = '').'">'.$title.'</a><br>'.'цена: '.(0.000001*$item['i_price']).' руб.'.'<br>' .$item['s_address'].' ';
$address = implode(", ", $addr);

//$img_pp = '<img src="'.osc_base_url() . 'oc-content/themes/one/images/categ_image/' . osc_category_id() . '.png'.'" width="" height="" alt="'.$title.'" />';



if(in_array($address, $addresses)) {
continue;
}
?>
showAddress('<?php echo $title; ?>', '<?php echo $address; ?>') ;
<?php
$addresses[] = $address;
}
?>

});
</script>

Спасибо за помощь.

LG
На сайте с 17.01.2014
Offline
42
#1

и тихо), эх... не ужели не получу помощи?

C
На сайте с 18.10.2010
Offline
55
#2

Для кластеризации объектов в API Яндекс.Карт используется класс Clusterer https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer-docpage/

var myGeoObjects = [];

for (var i = 0; i<coords.length; i++) {

myGeoObjects = new ymaps.GeoObject({
geometry: {
type: "Point",
coordinates: coords
}
});
}

var myClusterer = new ymaps.Clusterer();
myClusterer.add(myGeoObjects);
myMap.geoObjects.add(myClusterer);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий