Клуб API Карт

Добавление и удаление треков на карте.

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

Здравствуйте, у меня вот какая задача есть база треков (набор .gpx файлов), которые лежат в определённой директории на сервере с WordPress. Нужно показать их на карте. html код я генерирую с помощью PHP.

<form><inputtype="checkbox"name="2014-07-13.gpx"value="2014-07-13.gpx"onchange="showtrack('2014-07-13.gpx',1)">2014-07-13.gpx<br><inputtype="checkbox"name="2014-06-21.gpx"value="2014-06-21.gpx"onchange="showtrack('2014-06-21.gpx',4)">2014-06-21.gpx<br></form>

Под самой картой список checkbox'ов при смене состояния вызывается javascript

function showtrack (name,k){
checkbox
=document.getElementsByName(name);
if(checkbox[0].checked==true){
  ymaps
.geoXml.load('http://mkpp.org/geo/tracks/'+name).then(
   
function(res,k)
   
{ myMap.geoObjects.add(res.geoObjects,k);
    myMap
.setBounds(res.geoObjects.getBounds());
 
});
}
else{
  myMap
.geoObjects.remove(k);
}

Суть в том, что трек надо показывать только при выделенном checkbox'е. Отображаться отображается, а вот при попытке удалить трек с карты, на myMap.geoObjects.remove(k); ругается "Uncaught TypeError: undefined is not a function". Как побороть? Уже запутался в этих коллекциях. В голове каша, проясните пожалуйста.

1 комментарий

Чтобы не было каши надо почитать про Javascript.

Переменная "k" видна только внутри функции, если она передается как параметр.

Добавляйте ваши треки (отмеченные чекбоксом) в определенную коллекцию, добавленную на карту.

Треки у которых чекбокс выключен, можно добавлять в коллекцию, НЕ ДОБАВЛЕННУЮ на карту, тогда они будут c карты пропадать.