Клуб API Карт

Переход по ссылке к следующей карте

D.Abramov8
23 ноября 2014, 22:36

Добрый вечер!

Вот какой возник вопрос....

У меня на карте есть Plaсemark, при нажатии на который всплывает Balloon. который в свою очередь имеет контент.

Контент этот содержит ссылку при нажатии на которую нужно осуществить переход к другой карте в рамках действующего окна...как это лучше реализовать (типы карт уже созданы)? метод ONCLICK=map.setType не получается...

С уважением, Дмитрий

 

var skPlacemark = new ymaps.Placemark([-0.17, -0.76], {

hintContent: 'Север',

balloonContent: '<h3>Север</h3>'+ '<br />' +  '<img src="#" width=90 />' + '<br />' +'Верх' + '<br />' +

'<a href=# >Ссылка_1 </a>' +'&nbsp;|&nbsp;'+ '<a href=#> Ссылка_2 </a>' +'&nbsp;|&nbsp;'+ '<a href=#> Ссылка_3  </a>',

},

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

Типы карт надо создать (можно посмотреть код, возращаемый программой по нарезке тайлов)

Насчет балуна с переключением типов, вот пример

ого, не просто выглядит...разобраться бы здесь... сложно...

Здесь я определяю вид наполнения баллуна:?

  var MyBalloonContentLayout = ymaps.templateLayoutFactory.createClass([

    '',

      '

{{ properties.title }}

',

      '',

      '{% for key, value in properties.types %}',

        '{{ value }}',

      '{% endfor %}',

    ''

  ].join(''), 

 

а здесь задаю сам баллон:

  var placemark = new ymaps.Placemark([55.650625, 37.62708], {

    title: 'Север',

    link: 'http://..',

    types: {

      'yandex#map': 'схема',

      'yandex#satellite': 'спутник',

      'yandex#hybrid': 'гибрид'

    }

  }, {

    balloonContentLayout: MyBalloonContentLayout,

    hintContentLayout: ymaps.templateLayoutFactory.createClass('{{ properties.title }}')

  });


????

Ок,

здесь все получилось! Спасибо! Здоровья Вам желаю!

Следующая моя трудность - это то, что я загружаю карту другой местности (в отличие от примера) и мне необходимо динамически удалить все placmark'и и новые создать,

что здесь подскажете?

вы можете использовать разные коллекции меток и добавлять/удалять их с карты или удалять и заного заполнять рутовую коллекцию myMap.geoObjects.

 

Я не знаю про задачи в вашем проекте, но в общем случае я бы не делал этот функционал внутри балуна метки, т.к. получается что при клике в балуне метка должна поменять тип карты да еще и удалить сама себя и другие объекты + добавить какие-то новые. Мне сложно понять зачем так нужно делать

Здесь сервис перехода в другую комнату, т.е. я нахожусь в комнате с информацией (книжные полки, стол, стул, дверь)... на ручке двери метка, при нажатии на которую возникает баллон "Перейти в другую комнату", например, а в другой комнате уже другая информационная нагрузка, т.е. и координаты и наполнение меток другие....как быть?

Тут вопрос архитектуры приложения.

Написать конечно можно как угодно и что угодно и потом с этим что угодно непонятно что делать и как поддерживать.

Постараюсь объяснить:

С точки зрения архитектуры этот диалог должен быть не в балуне, а в контроле (панели поверх карты), балун принадлежит метке, а метка (ручка двери) не может "знать" ни про другую комнату, ни про другие предметы в комнате, она может знать только про себя и про родителя (дверь).

Сам контрол (который у вас сейчас балун) тоже знать этого не может, он только показывает то что ему скажут.

В вашей системе должен быть Класс, имеющий достаточно информации для управления другими классами (вывод сообщений, переход между слоями-комнатами) Он должен хранить ссылки на все предметы в комнате, и ссылки на инфо-окно, чтобы показывать в нем куда будет переход.

Этот класс – "Информационный эксперт" (согласно паттернам распределения обязанностей GRASP) 

 

1-е что вам тут нужно сделать, это продумать и расписать архитектуру системы. Реализация должна быть последним пунктом, а сейчас вы начали "смотреть фильм с конца"

Да, согласен с Вами, но отчаиваться не буду)) у меня мало знаний, чтобы с легкостью создать новые классы, которые формируют окна над картой с выбором действий и т.д....хорошо буду учиться...попробую спроектировать архитектуру...

хотя задача такая - есть объект (точка), об объекте есть информация (баллон), зная информацию нужно принять решение "Вперед, назад, вправо или влево"...

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

Я не говорю что точки не нужны, точки это лишь отображение (в парадигме MVC) сущности, еще должны быть модели и контроллеры.

 

Учиться надо, и в данной области особенно, как говорил персонаж одного мультфильма, — "лучше день потерять, и потом за 5ть минут долететь"