http://pennylane.recrm.ru
Имеется набор точек (в данной проблеме 2 штуки). (Привожу весь код)
$(function(){
// массив точек создаем
var __map_points = new Array();
__map_points[__map_points.length] = {
ID: 174, Longitude: 30.260298, Latitude: 59.865926, Title: '<a href="property/174/">Стачек д77</a>', Img: '<a href="property/174/"><img class="logoImg" src="http://crm.pennylane.recrm.ru/Static/TIMG/155_116_A_MC_png_W/resources/properties/0174/picture_0001.jpg?35EC8FD1666A974A92F0AB1BF0BB8772 "/></a>', Type: 'торговые помещения', Price: '<b> 69 000 руб.</b> в месяц', Square: '57,50 м<sup>2</sup>' }
__map_points[__map_points.length] = {
ID: 176, Longitude: 30.261511, Latitude: 59.866667, Title: '<a href="property/176/">Стачек д94</a>', Img: '<a href="property/176/"><img class="logoImg" src="http://crm.pennylane.recrm.ru/Static/TIMG/155_116_A_MC_png_W/resources/properties/0176/picture_0001.jpg?99F30BA9D3E6E50F95C29BD78653C08B "/></a>', Type: 'торговые помещения', Price: '<b> 549 928 руб.</b> в месяц', Square: '106,00 м<sup>2</sup>' }
ymaps.ready(function () {
if(__map_points.length>0){ var points = new Array(); var min_lng = 180.0; var min_lat = 90.0; var max_lng = -180.0; var max_lat = -90.0; for(var index = 0; index < __map_points.length; index++) {
var pt = __map_points[index]; if(pt.Longitude < min_lng) min_lng = pt.Longitude; if(pt.Latitude < min_lat) min_lat = pt.Latitude; if(pt.Longitude > max_lng) max_lng = pt.Longitude; if(pt.Latitude > max_lat) max_lat = pt.Latitude; } // определяем максимальные и минимальные широту и долготу из всех точек массива var j_map_holder = $("#div_map_holder"); // создаем карту
// !здесь и кроется проблема, как мне кажется в функции getCenterAndZoom
var map = new ymaps.Map(
j_map_holder[0],
ymaps.util.bounds.getCenterAndZoom( [[min_lat, min_lng], [max_lat, max_lng]], [j_map_holder.width(), j_map_holder.height()] ) );
map.controls.add("zoomControl");
if(__map_points.length==1)
{
var coords = [__map_points[0].Latitude, __map_points[0].Longitude];
map.zoomRange.get(coords).then(function(range)
{ map.setCenter(coords, range[1]); })
}
var myBalloonContentLayoutClass = ymaps.templateLayoutFactory.createClass(
'<div class="ymaps_baloon_out">' +
'<div class="ymaps_baloon">' +
' <div class="baloon_title"> $[properties.description]</div>' +
' <div class="baloon_image"> $[properties.photosrc]</div>' +
' <div class="baloon_text">' +
' <div class="info">$[properties.type]: <br/><b>$[properties.square]</b><br/>Стоимость: <br/>$[properties.price]</div>' +
' <div class="date">Добавлено: 20.07.2012</div>' +
' </div>' +
' <div class="clearfix"></div>' +
' <div class="arrow_b"></div>' +
'</div>'+ '</div>' );
myGeoObjects = [];
for(var index = 0; index < __map_points.length; index++)
{ var pt = __map_points[index]; var point = new ymaps.GeoObject( { geometry: { type: "Point",
coordinates: [pt.Latitude, pt.Longitude]
},
properties: {
clusterCaption: pt.Title,
description: pt.Title,
photosrc: pt.Img,
type: pt.Type,
square: pt.Square,
price: pt.Price,
iconImageSize: [60, 60],
iconImageOffset: [-20, -20]
}
},
{ balloonContentLayout: myBalloonContentLayoutClass }
);
myGeoObjects[index] = point;
// добавляем точки в массив геообъектов
}
var myClusterer = new ymaps.Clusterer({showInAlphabeticalOrder: true});
// добавляем геообъекты в кластеры
myClusterer.add(myGeoObjects);
map.geoObjects.add(myClusterer);
} else {
$("div.estate_list").addClass("hide_map");
}
});
});
Собственно, проблема, в том, что передаю функции getCenterAndZoom максимальные и минимальные координаты из всех точек, а также размеры самой карты - функция автоматически ставит неверный зум. Пересмотрел и апи, и клуб, никакая информация не помогла.