Клуб API Карт

Как сдвинуть центр и масштаб на коллекцию?

kaa67
16 января 2013, 11:35

Прошу МЕТОДИЧЕСКОЙ помощи у разработчиков.

Контент-менеджеры кликом на карте указывают в статейном материале геотаргетинг объекта статьи, всё происходит стандартным образом:
=================================================
mymap.events.add('click', function (e) {
   if (mymap.balloon.isOpen()){mymap.balloon.close();}
   var coords = e.get('coordPosition');
   mymap.balloon.open(coords, {
        contentHeader: 'ЦЕЛЕУКАЗАНИЕ<br>ПРИНЯТО',
        contentBody:
             'Ш: ' + coords[0] +
             '<br>Д: <b>' + coords[1],
        contentFooter: 'Можно уточнять'
   });
  $("#latitude").val(coords[0]);
  $("#longitude").val(coords[1]);
});
=================================================
Засада следующая, вдруг они говорят: "а мы кое-что - где оно на карте расположено - не знаем (!!!), нам бы поискать поиском бы!

1) Не проблема, я даю им строку поиска,
================================================
<input type="text" id="Ymap_search_text" value="" />
<input type="button"  id="Ymap_search_btn" value="Найти"/>
================================================

2) создаю GeoObjectCollection()
================================================
myCollection = new ymaps.GeoObjectCollection();
================================================

3) заполняю коллекцию результатами поиска и вбрасываю их на карту
=================================================
$('#Ymap_search_btn').bind("click",function(){
       var search_query = $('input#Ymap_search_text').val();
       ymaps.geocode(search_query, {results: 10}).then(function (res){
             myCollection.removeAll();
             myCollection = res.geoObjects;
             mymap.geoObjects.add(myCollection);
             mymap.setZoom(8, {duration: 2000});
        });
});
==================================================

ЗАСАДА: коллекция появляется на карте, но КАК ЖЕ ТУДА ПОДВИНУТЬ ЦЕНТР КАРТЫ?
Причём, непонятно это самое ТУДА, оно же КОЛЛЕКЦИЯ.
Я чувствую, что я упёрся в то, что не знаю, как вынуть данные о количестве и координатах объектов коллекции

Не хватает уровня-с...

Уважаемые разработчики! Подскажите пожалуйста:
==================================================
1) как правильно проверить - есть ли что-то в коллекции?
2) Как вытащить координаты первого элемента коллекции?
==================================================

2 комментария
Подписаться на комментарии к посту

На все ваши вопросы есть ответы в документации.

Не надо ленится ее читать - в конце коонцов съекономите свое время

1. myCollection.getLength() != 0

2. myCollection.get(0).geometry.getCoordinates()


 

ЗАСАДА: коллекция появляется на карте, но КАК ЖЕ ТУДА ПОДВИНУТЬ ЦЕНТР КАРТЫ?
Причём, непонятно это самое ТУДА, оно же КОЛЛЕКЦИЯ.

myMap.setBounds(myCollection.getBounds());

 

 

PS:

 

            myCollection.removeAll();
             myCollection = res.geoObjects;
             mymap.geoObjects.add(myCollection);

 

так не надо делать.

вы перетираете ссылку на коллекцию и заного добавляете новую на карту, 

не удаляя старую (утечка памяти)

Я конечно могу ошибаться, но вроде как данные ответа геокодера передаются в результирующую функцию в параметре res, и если вы запрашиваете 10 элементов, то логично было бы предположить что это res и является массивом, либо объектом из этих 10 элементов ответа. Вы не пробовали обращаться к res? (Заранее говорю, что это пока пальцем в небо...)