Клуб API Карт

Идентификтор GeoObjectArray или GeoObjectCollection

Пост в архиве.

Существует ли способ задать идентификатор для GeoObjectArray или GeoObjectCollection и потом по этому идентификатору к нему обратиться?

Хотелось бы иметь возможность создавать конструкции наподобие:

myPlacemarkArray = new ymaps.GeoObjectArray(

каким-то образом присвоить ему идентификатор, например MainGroup

....добавление объектов в коллекцию...... 

и затем обращаться к нему в каком-то таком виде:

ymaps.GeoObjectArray("MainGroup").getLength() 

Сколько руководство не изучала, ни описаний, ни примеров подобного толка не нашла  

6 комментариев

var myPlacemarkArray = new ymaps.GeoObjectArray();

myPlacemarkArray.getLength();

оно?

Нет. Идея в том, что есть несколько коллекций, объединяющих объекты по тем или иным причинам (например, одна описывает маршрут и метки похода номер один, другая маршрут и метки похода номер два и т.д.)

К примеру, пользователь выбирает из select'a "Pohod1" или "Pohod2" или "Pohod3" и работает с коллекцией Pohod1... Pohod2...Pohod3.......Pohod10

Вместо того чтобы громоздить конструкции

if (choice=="Pohod1") {

alert(Pohod1.getLength())

}

else if (choice=="Pohod2") {

alert(Pohod2.getLength())

}

.......

else if (choice=="Pohod10") {

alert(Pohod10.getLength())

}

 

иметь возможность использовать конструкции

choice="Pohod1" (или "Pohod5"... "Pohod8"... "Pohod10", получаемые тем или иным способом)

alert(ymaps.GeoObjectArray(choice).getLength())

Такой возможности нет, но решение вашей задачи ее и не требует.

Помещайте созданные вами коллекции в ваш собственный хэш, под уникальными ключами:

 

tours = {pohod1: new GeoObjectArray(),pohod2: new GeoObjectArray()}

 

и доступ к ним осуществляйте через этот хэш.

 

tours["pohod1"].getLength()

 

 

Благодарю. Действительно, весьма удобное решение.

И тогда еще один вопрос  (не имела дела с хэшами раньше) :

если я создам хэш вышеуказанным способом, потом добавить еще одну коллекцию я смогу? Если да, то как? 

спасибо всем за помощь