Вопрос по Кластерам для API Яндекс.Карт

SPavel_74100

Новичок
PHP:
 //  ymaps.load('package.geoObjects');
 //  ymaps.load('package.clusters');
jQuery(document).ready(function () {
ymaps.ready(function () {
  myMapList = new ymaps.Map('myMap',
  {
  center: [55.152161, 61.387103],
  zoom: 9,
/*  maxZoom: 10,
  minZoom: 0,*/
  behaviors: ['default', 'scrollZoom'],
  type: 'yandex#map'
  });

  Default_Map();
});

//myMap.setCenter([55.169514, 61.451745], 6);
//myMap.panTo([56.018464, 61.029340], {duration: 2000});  //переместится к точке   http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml#panTo
//myMap.setBounds([[50.1, 30.2],[60.3, 20.4]]);
});


function GetCoordinatesBase()
{
  var coords = new Array();
  var i = 0;
  jQuery("a[coordinatesbase]").each(function() {
     var coordinatesbase = jQuery(this).attr('coordinatesbase');
     var idbase = jQuery(this).attr('idbase');
     var headdata = jQuery(this).attr('headdata');
     var re =  /([0-9]{2}.[0-9]{6})/g
     result = coordinatesbase.match(re);
     // alert(result[1]);
     // headdata="Вторичное жилье||Квартира||Сдам в аренду||Одна комнатная||home_7294.png"
     coords[i] =  new Array(result[1], result[0], idbase, headdata.split('||'));
     i = i + 1;
  });
  //alert(coords[0][3][0]);
  return coords;
}
function NewYmaps_GeoObject(coordinatesX , coordinatesY, idbase, arrData)
{
  //headdata="Вторичное жилье||Квартира||Сдам в аренду||Одна комнатная||home_7294.png"
  var It_hintContent =  arrData[2] + ' - ' + arrData[1];
  if(arrData[3] != '-')
  {
    It_hintContent = It_hintContent + ', ' + arrData[3];
  }
  var ret = new ymaps.GeoObject(
  {
        geometry:
        {
            type: "Point",
            coordinates: [coordinatesX, coordinatesY]
        },
        properties:
        {
            hintContent: It_hintContent,
            balloonContentHeader: arrData[1],
            balloonContentBody: "",
            idbase: idbase
            /*iconContent: "2"     */
        }
   },
   {
      hideIconOnBalloonOpen: true,
      iconImageHref: '/declare/images/map/home/' + arrData[4],
      iconImageSize: [35, 35]
   }
   );

   ret.events.add('click', onClickPoint);
   return ret;
}

function onClickPoint(e)
{
/*
  var PointeMark = e.get('target'),
      map = PointeMark.getMap(), // Ссылка на карту.
      bounds = PointeMark.getBounds(), // Область показа карты.
      idbase = PointeMark.properties.get('idbase'); // Получаем данные для запроса из свойств метки.
      alert(idbase);
*/
   var PointeMark = e.get('target');
   idbase = PointeMark.properties.get('idbase'); // Получаем данные для запроса из свойств метки.
   //alert(idbase);

       var serverAdress = '/declare/js/ajax_map_infodeclare.php';
        //alert(valobj);
        _valobj = encodeURIComponent(idbase);
        pushPOST = 'ValObj=' + _valobj;
        var xml_doc = jQuery.ajax({
  					  type: "POST",
  					  url: serverAdress,
                      cache: false,
  					  data: pushPOST,
                      dataType: "html",
                      timeout: 3000,
                      async: false,
                      beforeSend: function(){
                                               PointeMark.properties.set('balloonContentBody', '<div class="MapContentBodyProcess"><div class="ProcessLoad"></div></div>');
                                            },
  				      success: function(xml_doc){
                                                  PointeMark.properties.set('balloonContentBody', xml_doc);
                                                }
  				    });
}



function Default_Map()
{
   myMapList.controls.add('zoomControl'); // увеличение
   myMapList.controls.add('typeSelector');
   myMapList.controls.add(new ymaps.control.TypeSelector(['yandex#map', 'yandex#hybrid', 'yandex#publicMap', 'yandex#publicMapHybrid']));

/*
   var coords = [
    [55.169514, 61.451745],
    [55.161116, 61.420547],
    [55.160324, 61.424688],
    [55.160324, 61.424688],
    [55.196048, 61.472802]
]
*/

var coords = GetCoordinatesBase();

var myGeoObjects = [];

var l1 = ymaps.templateLayoutFactory.createClass('$[properties.balloonContentBody]');
var l2 = ymaps.templateLayoutFactory.createClass('');
ymaps.layout.storage.add('my#Pointe_Body', l1);
ymaps.layout.storage.add('my#Pointe_Header', l2);

for (var i = 0; i<coords.length; i++) {
  myGeoObjects[i] = NewYmaps_GeoObject(coords[i][0], coords[i][1], coords[i][2], coords[i][3]);
}

var clusterIcons = [{
                href: '/declare/images/map/find.png',
                size: [53, 53],
                // Отступ, чтобы центр картинки совпадал с центром кластера.
                offset: [-20, -20]
            },
            {
                href: '/declare/images/map/find.png',
                size: [63, 63],
                offset: [-30, -30]
            }
        ];
        // При размере кластера до 100 будет использована картинка 'small.jpg'.
        // При размере кластера больше 100 будет использована 'big.png'.
// Создадим кластеризатор и  приближать карту при клике на кластеры.



                    MyMainContentSubLayout = ymaps.templateLayoutFactory.createClass(

                        '<div width="100">' +

                            '$[properties.balloonContentHeader]' +

                        '</div>'

                    ),

clusterer = new ymaps.Clusterer();
clusterer.options.set({
    disableClickZoom: false,
    synchAdd: false,
    icons: clusterIcons,
    numbers: [10],
    balloonContentBodyLayout:'my#Pointe_Body',
    balloonContentHeaderLayout:'my#Pointe_Header'
});

/*,
    clusterBalloonMainContentLayout: MyMainContentLayout*/




clusterer.add(myGeoObjects);

clusterer.events.add('balloonopen', function (e) {
var geoObjects=[];
    var cluster = e.get('target'),
    geoObjects = cluster.properties.get('geoObjects');

    if(geoObjects)
    {

          geoObjects.forEach(function(index, i){
                  (function (currentGeoObject) {


                              var idbase = currentGeoObject.properties.get('idbase');

                              var serverAdress = '/declare/js/ajax_map_infodeclare.php';
                                //alert(valobj);
                                _valobj = encodeURIComponent(idbase);
                                pushPOST = 'ValObj=' + _valobj;
                                jQuery.ajax({
                          					  type: "POST",
                          					  url: serverAdress,
                                              cache: false,
                          					  data: pushPOST,
                                              dataType: "html",
                                              timeout: 3000,
                                              async: false,
                                              beforeSend: function(){
                                                                       currentGeoObject.properties.set('balloonContentBody', '');
                                                                    },
                          				      success: function(xml_doc){
                                                                          currentGeoObject.properties.set('balloonContentBody', xml_doc);

                                                                        }
                          				    });

                      })(index);

                  });

    }

});

myMapList.geoObjects.add(clusterer);


}

Когда точки находятся в одних и тех же координатах. Бьюсь, Бьюсь не могу никак настроить правильного отоброжение правой части clusterer
0_7c819_f9570043_L.png
 
Сверху