Клуб API Карт

Пересоздать карту с новым центром и объектами на нем!

admin@diadel.ru
28 июня, 13:45

Добрый день! Есть такая проблема! Мне требуется создать две карты для отправки и приема посылок, 1-я карта создается с пунктами отправления, 2-я карта создается с пунктами назначения, пункты отправления и назначения, которые я добавляю на карты в виде Placemarks - должны обновляться, если человек выбирает другой город в котором он хочет отправить или получить посылку!

вот код, которым я создаю и заполняю карты

ymaps.ready(function  () {
    var myMap;
 

  putPlaceMarks = function(arr){
      var time_lunch=lunch(JSON.parse(arr.MST_SCHED))!=''?lunch(JSON.parse(arr.MST_SCHED)):'';
      var time_work=Unique(JSON.parse(arr.MST_SCHED))!=''?'Время работы: '+Unique(JSON.parse(arr.MST_SCHED)):'';
      var link_otd = '<a href="#" id="but" data-label="'+arr.label+'" class="terminal-map-select" >Выбрать адрес</a>';
      var hidden_value="<span  class='hidden' id='link_value' style='display:none'>"+JSON.stringify(arr)+"</span>";

    var myPlacemark = new ymaps.Placemark([arr.SHIR, arr.DOLG], {
       balloonContentHeader: arr.MST_NAME+' ',
       balloonContentBody: '<b>Адрес отделения: </b>'+arr.desc+' ',
       
       hintContent: time_work+'<br>'+time_lunch,
       balloonContentFooter: time_work+'<br>'+time_lunch+'<br>'+link_otd+'<br>'+hidden_value,
    },
           {
            iconLayout: 'default#image',
            // Своё изображение иконки метки.
            iconImageHref: '/img/balloon_mini.png',
            // Размеры метки.
            iconImageSize: [30, 42],
            
          }); 

    myMap.geoObjects.add(myPlacemark);// заполняем яндекс карты

  },


       init = function(){
if (myMap){
    myMap.destructor();
}

           myMap = new ymaps.Map(map_id.attr('id'), {
       center: [MstInList[0].SHIR, MstInList[0].DOLG],
       zoom: 8,
       controls: ['zoomControl', 'searchControl', 'typeSelector']
     }); 
     for(j=0;j<MstInList.length;j++) {
       putPlaceMarks(MstInList[j]);
     }

 }; 

       ymaps.ready(init);

помогите разобраться, мне нужно понять, каким образом я могу пересоздать на карте объекты и центр, если после выбора города, выполняется скрипт с новым массивом точек для карты!

   map_id.empty(); - не работает, выпадает куча ошибок!

Я хочу спросить, существует ли возможность, удалить конкретную карту (как получить ее id?) или как перезаполнить данные по объектам на карте!

Дополнение:

Создается 2 карты - для отправления и получения!

25 комментариев
Подписаться на комментарии к посту
у карты нет метода destructor.
если в один момент времени вы хотите показывать одну карту – нет смысла ее удалять.
можно сменить центр, удалить старые объекты и добавить новые
admin@diadel.ru
28 июня, 14:32
dimik,
Я как-бы и спрашиваю, как мне изменить центр карты, и удалить старые объекты и добавить новые? Как мне проверить, создана ли определенная карта (например для отправлений) и как перезаполнить именно ее????
admin@diadel.ru,
Для изменения центра - метод setCenter
https://tech.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/Map-docpage/#setCenter



Удалить все объекты из коллекции geoObjects можно методом removeAll
https://tech.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/GeoObjectCollection-docpage/#removeAll


admin@diadel.ru
28 июня, 14:43
dimik,
 Спасибо, конечно, я я в курсе этих операций, Вы можете помочь по существу, или будете отвечать только очевидные вещи? У меня две карты, которые заполняются разными объектами из коллекции, клиент может выбирать объекты на карте на одной и другой в любое время, до тех пор, пока не поменяет город отправления или назначения, только после смены города, должна перезаполниться определенная карта, как для отправления или назначения, смотря что выбрал клиент. Вопрос, как мне перезаписать данные на конкретной карте? как я моугу выбрать карту, которую нужно перезаписать данными, если я знаю, что клиент выбирает - отправку или доставку! надеюсь понятно объяснил!
admin@diadel.ru,
Чтобы перезаписать что-то на карте надо хранить ссылку на карту (в переменной)


Пока я не понимаю в чем именно проблема. 

Обновлено 28 июня, 15:09
admin@diadel.ru
28 июня, 15:08
dimik,
подскажите как это сделать, пожылуйста
admin@diadel.ru
28 июня, 15:11
dimik,
проблема в том, что данные на нужно карте не обновляются и не удаляются
admin@diadel.ru,
Могу ответить на конкретные вопросы по АПИ. Если помощь это взять и написать все за вас - ничем не могу помочь 
admin@diadel.ru
28 июня, 15:33
dimik,
Вы написали:"надо хранить ссылку на карту (в переменной)" - как получить ссылку на эту карту? я не могу найти в help!!
admin@diadel.ru
28 июня, 15:36
dimik,
У меня такое ощущение, что скрипт не понимает, в какой карте обновить центр, и какую коллекцию удалить! Потому, что коллекция не обнуляется, центр тоже не перезаписывается для карты!
admin@diadel.ru,
Соберите работающий пример на jsfiddle. По коду в посте я не могу подсказать, нужно запускать и смотреть в дебаггер
admin@diadel.ru
28 июня, 16:02
dimik,
https://jsfiddle.net/3o15q43g/ 
вот, но не пойму, почему карта не загружается
admin@diadel.ru
28 июня, 16:31
dimik,
https://jsfiddle.net/phm6tmo0/ -вот обновил, но почему-то карту не идентифицирует
admin@diadel.ru
28 июня, 16:41
dimik,
короче, этот ресурс не дает возможности сделать то, что мне нужно, с моим массивом, скажите просто, как я могу получить id созданных карт, чтобы проверить их на существование?!
admin@diadel.ru,
ресурс тут ни при чем. у вас 2 вызова ymaps.ready
+ вы обращаетесь к карте myMap, до ее создания
admin@diadel.ru
28 июня, 16:59
dimik,
https://jsfiddle.net/phm6tmo0/8/ - вот так создает карту, но не рисует на ней метки!
admin@diadel.ru,
Я уже написал – у вас 2 вызова ready – убрал
https://jsfiddle.net/phm6tmo0/9/
admin@diadel.ru
28 июня, 17:14
dimik,
ок, вот моя версия
https://jsfiddle.net/phm6tmo0/10/

с инитом. Вот теперь как мне удалить объекты с этой карты, если я подам ей другой массив?
admin@diadel.ru,
myMap.geoObjects.removeAll();
admin@diadel.ru
28 июня, 17:31
dimik,
какая-то странная помощь у вас, куда вставить этот запрос?
если я его вставляю в init, ничего не происходит, если я вставляю его в нутрь ymaps.ready
получаю ошибку
Uncaught TypeError: Cannot read property 'geoObjects' of undefined
admin@diadel.ru
28 июня, 17:33
dimik,
у меня вообще ощущение, что он теряет и карту и коллекцию! как мне проверить, существет ли карта или нет?
admin@diadel.ru,
Вставьте туда где будет видна переменная myMap


Ощущения возникают там где не хватает знаний.
Перед тем как писать код, надо почитать что-то про язык, иначе это как бродить впотьмах.


Вот хорошая книга
http://www.ozon.ru/context/detail/id/7015261/
admin@diadel.ru
28 июня, 17:47
dimik,
я понимаю, Ваш уровень знания js высок, и отличается от моего, но не нужно судить о возможностях человека, только если карты работают через Ж. Скажите мне просто, как мне проверить существование карты, либо получить ее id? и все, больше мне ничего не нужно!
admin@diadel.ru,
Дело не в картах, вы написали код через Ж и теперь зачем-то хотите что-то проверить и какой-то id. Здесь ничего не нужно проверять и не нужен никакой id. Карта есть там, где вы ее создали, если ее нет там где вам надо – ее надо туда передать.


Но я не готов быть вашим проводником в javascript и вести вас за руку всю дорогу. Это выходит за рамки клуба, и моего участия в нем.


И дело не только в javascript. Сам подход неправильный.
Такие комплексные задачи не решают в лоб.
Предметную область описывают, составляют словарь терминов, выделяют сущности и связи, применяют ОО подход, составляют диаграмму классов, диаграмму состояний, рисуют схемы и когда все классы и связи описаны приступают к написанию кода.


Вы же хотите сесть и побыстрому скриптик настрочить внутри document.ready в одном файле – так не бывает
Обновлено 28 июня, 18:08
admin@diadel.ru
29 июня, 11:56
dimik,
спасибо за наставления, но по моему глубокому убеждения, Ваша задача помогать людям понять тонкости и нюансы работы api ЯК, а Вы, занимаясь бесполезными разговорами, отходите от сути проблем тех людей, которые обращаются к Вам за помощью. Я благополучно разобрался и без Вашего участи, к сожалению я потратил только время на переписку с Вами в ожидании конкретной помощи, которую я так и не получил! Еще раз спасибо, и извиняюсь, что занял Ваше столь драгоценнейшее время!