Клуб API Карт

Разделение меток на группы

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

Приветствую, уважаемое сообщество.

С API Яндекс.карт начал взаимодействовать и разбираться буквально сегодня, до этого дня приходилось только схему проезда для сайтов-визиток делать.

 На данный момент у меня стоит задача следующего содержания:

  1. Вывести на карте кучу объектов недвижимости (с этим вроде всё понятно)
  2. На этой же карте вывести офисы компании
  3. При нажатии на определённые переключатели что бы отображались либо Офисы компании, либо объекты. Если бы можно было ещё объекты как-то по типам разделить, было бы вообще замечательно.

Так же, написал админку для карты маленькую: при добавлении нового объекта сохраняются координаты точки. Всё бы ничего, да только функция возвращает координаты точки на которую перемещён баллун только после того, как на ней кнопкой мыши щёлкнуть, а не просто после перемещения и отпускания баллуна в нужном месте. Не подскажите что я делаю не так?

 

<input id="tvID" style="width: 80%; height: 25px; padding: 8px 16px;" name="tvID" type="text" value="56.946968477018565,60.93010053125">
</p><script src="http://api-maps.yandex.ru/2.0/?load=package.full&amp;lang=ru-RU" type="text/javascript"></script><p>
</p><script type="text/javascript">// <![CDATA[
     
var ObjecPoint = [56.946968477018565,60.93010053125];
        ymaps.ready(init);
        function init () {
           
            var myMap = new ymaps.Map('tvIDMap', {
                    center: ObjecPoint, // Екатеринбург
                    zoom: 10
                });
myMap.controls
                 .add('zoomControl')
                 .add('typeSelector')
                .add('mapTools');
            myMap.controls
                .add(new ymaps.control.ScaleLine())
                .add(new ymaps.control.MiniMap({
                    type: 'yandex#publicMap'
                }));
var properties = {
balloonContent: 'Расположение объекта',
hintContent: 'Расположение объекта',
iconContent: '!',
hideIcon: false
},
options = { balloonCloseButton: true, draggable: true },
placemark = new ymaps.Placemark(ObjecPoint, properties, options);
myMap.geoObjects.add(placemark);
placemark.events.add('click', function (e) {
 var coords = e.get('coordPosition');// Читаем координаты
document.getElementById("tv{$tv->id}").value = coords;// Сохраняем координаты
});
}
    
// ]]></script>

 

Заранее извиняюсь, если поднял вопросы, которые 100500 раз уже обсуждались. Если это так, то ткните пожалуйста в нужное место почитать.

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

привет

посмотри нашу статью про группировку.

Кажется это то что ты хочешь

Спасибо, это то, что надо! 

А по поводу кода, что бы значние цеплялось при передвижении и/или остановке метки в какой-то точке не подскажите как реализовать?

В частности вот этот участок

 

placemark.events.add('click', function (e) {  var coords = e.get('coordPosition');// Читаем координатыdocument.getElementById("tv{$tv->id}").value = coords;// Сохраняем координаты в ТВ});

Опиши подробнее задачу.

есть input, в него должно попадать значение - координата точки на которой расположен баллун (метка).

Администратор заходит в админку и перетаскивает баллун.

В моём случае получается что только после клика по метке координаты передаются в input, а мне надо, что бы они передавались туда поле того как метка перемещена и отпущена. Т.е. перетащил метку по карте в нужное место и координаты автоматически записались в инпут, без щёлканья по метке дополнительного.

Событие drag и dragend вообще ничего не возвращает

 

 

Событие drag и dragend вообще ничего не возвращает

 

Из всех событий можно получить координаты

 

var pl = new ymaps.Placemark(center, {}, {draggable : true});

 

pl.events.add(['click', 'drag', 'dragend'], function (e) {

    console.log(e.get('target').geometry.getCoordinates());

});

 

map.geoObjects.add(pl);

Ну, яж не спорю что мои познания в API крайне малы =) Спасибо за разъяснение!

Попробую сделать так Вы советуете.

Благодраю ! Это то, что надо! (+1)

Попробую оформить решение в виде пакета и выложить в репозитарий MODx, когда функционала допилю для этого типа ввода данных.