Клуб API Карт

июнь 2013
Как удалить/отключить отслеживание событий?
Dmi-Afonin
1 июня 2013, 12:20

Добрый день, участники клуба.

Я столкнулся со следующей проблемой. Мне нужно по событию установки/снятия галочки в чекбоксе добавлять/удалять возможность отслеживания кликов по карте.

В качестве образца я взял этот пример с Занимательной Веб-картографии, немного модернезировав его.

В примере отслеживание событий myMap.events.add('click', function (e) {...}} добавляется в init, у меня, при установке галки в чекбоксе, но при снятии галки я так и не смог отключить данный обработчик событий. Пытался шаманить с myMap.events.remove('click', ...), но у меня ничего не получилось.

 

Прошу помощи, текст всего примера ниже

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU" type="text/javascript"></script>
<style type="text/css">
html, body,#map, #YMapsID {
width: 100%;
height: 95%;
margin: 0;
padding: 0;

}
</style>
<script type="text/javascript">
   var myMap, route, ch =1;
   var markers = [];
   var point = [];
   window.onload = function () {
     ymaps.ready(init);
   }
   function init () {

    myMap = new ymaps.Map('map', {
    center: [56.314102,44.017161], 
    zoom: 14
    });

    //Добавляем элементы управления 
    myMap.controls  
    .add('zoomControl')  
    .add('typeSelector')  
    .add('mapTools') 
   }

   function calcRoute() {
    route && myMap.geoObjects.remove(route);  
    for(var i = 0, l = markers.length; i < l; i++) {
    point[i] = markers[i].geometry.getCoordinates();
   }
 
  ymaps.route(point, {
    // Опции маршрутизатора
    mapStateAutoApply: true // автоматически позиционировать карту
    }).then(function (router) {

      route = router;
      myMap.geoObjects.add(route);
    }, function (error) {
      alert("Возникла ошибка: " + error.message);
    });  
  }

   //Удаление маршрута и меток с карты и очистка данных
    function reset() {
      route && myMap.geoObjects.remove(route);
      for(var i = 0, l = markers.length; i < l; i++) {
      myMap.geoObjects.remove(markers[i]);
      }
      markers = []; 
      point = [];
      ch = 1;
    }

   function enableRoute() {
   if (document.getElementById('activeroute').checked)
   {
     //Отсеживаем событие клика по карте  
     myMap.events.add('click', function (e) {  
       var coords = e.get('coordPosition');
       if(markers.length < 10)
       {
          myPlacemark = new ymaps.Placemark([coords[0].toPrecision(6),coords[1].toPrecision(6)], {
          // Свойства
          // Текст метки
          iconContent: ch
       }, {
          // Опции
          // Иконка метки будет растягиваться под ее контент
          preset: 'twirl#blueStretchyIcon'
       });  

       markers.push(myPlacemark);
       myMap.geoObjects.add(myPlacemark);
       ch++;
       }
       else
       {
        alert("Вы задали максимальное количество точек");
      }
      });  

      document.getElementById('createRoute').disabled = false;
      document.getElementById('clearRoute').disabled = false;
    }
    else
    {
      document.getElementById('createRoute').disabled = true;
      document.getElementById('clearRoute').disabled = true;
      reset();
      //myMap.events.remove('click', ???); Здесь нужно убрать отслеживание событий! 
    }
   }
</script>
</head>
<body>
<div id="map"></div>
<input type="checkbox" id="activeroute" onclick="enableRoute()" />Маршрут
<input type="button" id="createRoute" value="Построить маршрут" onclick="calcRoute()" disabled />
<input type="button" id="clearRoute" value="Очистить" onclick="reset()" disabled />
</body>
</html>

 

 

3 комментария
события,API 2.0
Проверка прокладки маршрута через точку (город)
polaa1
1 июня 2013, 23:04

Добрый день!

 

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

 

Заранее благодарен всем, кто сможет предложить варианты решения данной проблемы.

6 комментариев
маршрутизация,API 2.0
Получить полный адрес точки
shataloff.viktor
2 июня 2013, 14:16

Добрый день! У меня на карте есть SearchControl, когда вбиваю в него поисковый запрос например Мандрыковская 142, мне необходимо записат в инпут полный адрес например Украина, Днепропетровск, ул. Мандрыковская 142, Октябрський район. 

Координаты точки получаю так

coords = SearchControl.getResultsArray()[0].geometry.getCoordinates();

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

Если методами нельзя получить, то напишите, пожалуйста, как можно получить данные через геокодирование аяксом. Буду очень Вам благодарен

 

2 комментария
геокодирование
Как позиционировать кластер?
ZlojMyX
3 июня 2013, 01:05

Всем доброго времени суток.

Есть 20 меток, нужно поместить их в кластер и позиционировать карту на эту область.

На сколько я понял кластеры не поддерживают метод getBounds()

Помещение массива меток и коллекции - не дали результатов кроме ошибок.

 

Какие есть способы получить область где содержатся метки?

2 комментария
кластеризатор,API 2.0
координты multitouch
bitval
3 июня 2013, 01:54

Здравствуйте.

 

Как получить координаты обоих касаний при событии карты 'multitouchmove'? Необходимо повестить свой обработчик этого события, но e.get('coordPosition') возвращает только одну точку. Вообще где есть какая-нибудь документация по полям к которым можно получить доступ через метод get любого события?

1 комментарий
API 2.0
Вот такой "Крым на карте" получился
matvei.sheogorath
3 июня 2013, 13:24
Не пинайте сильно, мы только учимся)

Читать далее

8 комментариев
примеры проектов,метка,кластеризатор,события,балун
Выделение области как на cian.ru
kuklachel
3 июня 2013, 16:22

   Добрый вечер. На сайте http://www.cian.ru/nd/search/?deal_type=1&objects=flats&obl_id=1&flats=yes&selected_location=map существуют методы выделения. Поскажите, пожалуйста, как реализованно рисование многоугольника?

6 комментариев
API 2.0,полигон
Мысли вслух об анимации полигонов
matvei.sheogorath
3 июня 2013, 18:32

хм, задался вопросом: возможно ли сделать так, чтобы при переходе мыши с одного полигона на другой не сразу менялся цвет заливки, а плавно "перетекал" как-бы заполняя тот, на котором сработал mouseenter?

 

уж простите за глупый вопрос)))

2 комментария
полигон
Ошибка подключение
DMX1988
4 июня 2013, 12:52

Всем привет. Создал новый проект ASP.Net Empty web Application

 

Поместил скрипт для карты в тег <Head>

 

    <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"

            type="text/javascript"></script>

 

Запускаю страницу, и сразу выбевает ошибку. В чем проблемма

 

6 комментариев
Проблема со стилизацией иконок
taruk21
4 июня 2013, 12:55

Я использую функцию route и мне нужно задать стиль иконок, как это сделать? Очень нужно, помогите

4 комментария
маршрутизация,API 2.0,метка
geoxml.xml?callback=
MirDD
4 июня 2013, 14:04

http://api-maps.yandex.ru/services/geoxml/1.2/geoxml.xml?callback=id_1370342894066300931&url=http://nixufa.ru/test_map/doc.kml

Когда изменяю kml файл функция callback не сразу возвращает измения , предполлагаю что это кэшь...
напимер в kml файле создался новый объект а на карте он появляется не сразу а через какое то время.
Что можно сделать что бы объект появился сразу ? 

3 комментария
KML,API 2.0
Прямое геокодирование без загрузки карты.
kuklachel
4 июня 2013, 14:25

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

3 комментария
API 2.0,геокодирование
Перехват событий при редактировании полигона
indarent
4 июня 2013, 14:40

Вот такой код:

 

modalMap = new ymaps.Map ("YandexMapStreet", {

                    center: [55.76, 37.64],

                    zoom: 11

                });

                var polygon = new ymaps.Polygon([

                    [

                        [55, 37], [54, 37], [54, 38], [55, 38]

                    ]

                ], {

                    });

 

                modalMap.geoObjects.add(polygon);

                modalMap.setBounds(polygon.geometry.getBounds());

                

                polygon.editor.events.add('vertexdrag', function(event){

                    console.log('polygon.editor');

                });

                

                polygon.editor.startEditing();

 

Не получается перехватить события vertexdrag и т. д. Подкажите в чем проблема

3 комментария
API 2.0,полигон
Рассказ о технологии активных областей в Питере
tekunova
4 июня 2013, 14:53
Рассказ о технологии активных областей в Питере

15 июня в Санкт-Петербурге состоится летний Я.Субботник. В 17:00 Алексей Емелин (@aemelin), тестировщик API Яндекс.Карт, расскажет о технологии активных областей.

Каждому разработчику известно, что карта, перегруженная интерактивными объектами, создает огромную нагрузку на браузер и замедляет работу сайта. Но что делать, если отображение большого числа объектов, с которыми нужно взаимодействовать, — это не просто прихоть, а основная функциональность сервиса? В API Яндекс.Карт мы реализовали технологию активных областей, которая эффективно решает такие задачи. Доказательством этому являются, например, сервисы Яндекс.Пробки, Яндекс.Фотки на карте, а также многие сторонние сервисы, использующие API наших карт. В докладе мы расскажем о том, как именно работает эта технология и как вы можете использовать ее в собственных проектах.

Если вы 15 июня будете в Санкт-Петербурге, спешите зарегистрироваться, так как регистрация закрывается сегодня в 18:00. Для всех, кто не сможет попасть на мероприятие, будет организована онлайн-трансляция: http://bit.ly/yasubbotnik_spb_jun.

Алексей Емелин
Нет комментариев
анонсы,активные области,API 2.0,Я.Субботник
Перетаскивание метки в точки, координаты которых есть в базе данных
sergcloud
4 июня 2013, 14:58

Здравствуйте.

Входные данные:

База из более чем 200 000 населенных пунктов (название населенного пункта, регион, страна, его координаты). Пользователь с помощью всплывающих подсказок (нас. пункты подгружаются из базы) выбирает 2 нас. пункта, на сервера яндекс карт отправляются только координаты этих 2 нас. пунктов, и между ними на карте прокладывается маршрут. В общем все отлично, все работает.

Суть задачи:

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

Вопрос:

Подскажите, пожалуйста, насколько это возможно, и какие оптимальные пути решения такой задачи? Если подобное уже обсуждалось, скиньте пожалуйста ссылки. Самому не удается найти.

1 комментарий
метка,координаты,API 2.0
Цвета между точками
DMX1988
4 июня 2013, 17:43

Стоится маршрут между максимум 20 точками, как сделать что бы между точками был разный цвет маршрута (например: между 1 и 2 красная линия, между 2 и 3 зеленая и т.д)

1 комментарий
маршрутизация,API 2.0
порядок координат
vladun-g
4 июня 2013, 19:07

Есть страница http://divan-asm.ru/contact. На ней находится карта, координаты задаются в админке. Вопрос в том, что если нажать кнопку Показать (возле салоны в городе). Координаты карты воспринимаются наоборот, широта вместо долготы и долгота вместо широты. Для этого сделал вот такой костыль:

{if $is_select}

    var coord_1 = {$selected_region.rg_map_coord_2};

    var coord_2 = {$selected_region.rg_map_coord_1};

    {else}

    var coord_1 = {$selected_region.rg_map_coord_1};

    var coord_2 = {$selected_region.rg_map_coord_2};

    {/if}

В самом скрипте вот так:

 var myMap = new ymaps.Map('map', {

                center: [coord_1,coord_2],

                zoom: 9

            }); 

Получается что координаты coord_1 и coord_2 должны вроде как быть всегда на своем месте, но яндекс почему-то по разному воспринимает их при разных запросах. С одними регионами на карте обратный порядок помогает, с другими опять проблемы. 

Может кто сталкивался с такой проблемой?

3 комментария
координаты,API 2.0
2.0-stable переключен на 2.0.28
tekunova
4 июня 2013, 19:08
2.0-stable переключен на 2.0.28

Переключили api-maps.yandex.ru/2.0-stable на версию API 2.0.28.

Рекомендуем прочитать статью о системе версионирования и использовать наиболее подходящую для ваших задач ссылку для подключения API.

Команда разработчиков API Яндекс.Карт.

Нет комментариев
обновление,API 2.0
Использования инструмента "Определение координат"
vasyl.slobodian
4 июня 2013, 19:29

Здравствуйте,

такой вопрос:

Целесообразно ли пользоваться инструментом "Определение координат" (http://api.yandex.ru/maps/tools/getlonglat/) для определения координат объектов с последующим отображением их на интерактивные карте с основой OpenStreetMap? Как я понимаю Яндекс.Карты используют эллиптическую проекцию Меркатора, тогда как OSM -  сферическую. Получается, что маркеры на моей интерактивной карте будут немного смещены (относительно того размещения, которое я вижу на Яндекс Картах) .Я прав? Если да, подскажите пожалуйста варианты как можно использовать интсрумент  "Определение координат" для определения координат с последующим отображением их на карте OSM (то есть на карте со сферической проекцией Меркатора)


С уважением,

Василий

3 комментария
координаты,OpenStreetMaps
Сделать скриншот карты
prindin
4 июня 2013, 19:45

Как сделать скриншот карты после установки маркера на нее?

У меня есть страница на которой добавляю объекты, и если нет фото, тогда нужно сделать скрин карты где установлен маркер и поместить вместо фото

9 комментариев
Static API,screenshot