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