Клуб API Карт

июль 2014
Отображение на карте большого количества объектов
Михаил
1 июля 2014, 01:05

В процессе разработки портала по коттеджным поселкам столкнулся со следующей проблемой.

На карту показываю коттеджные поселки и кластеризую их.

Проблема появляется при масштабировании карты, например при раскрытии кластера.

Карта перестает нормально отображаться. Перестают загружаться тайтлы.

После нажатия на кластер выглядит следующим образом:

Восстановить работу карты удается только перезагрузкой страницы.

В связи с этим временно пришлось отключить возможность развернуть карту на весь экран.

Пощупать можно по адресу: https://3d-estate.ru/spb/settlement/map/

Как все-же отобразить на карте большое количество точек?

7 комментариев
метка,кластеризатор,API 2.1
Отобразить коллекции
Александр
1 июля 2014, 12:35

Есть коллекция

 

           myCollection

                .add(ait1) 

                .add(ait2);

            myMap.geoObjects.add(myCollection);

 

 

По кнопке

Прячу одну коллекцию - 

hidden.add(ait1);

(добавляю в пустую коллекцию)

 

Подскажите пожалуйста - как теперь показать эту коллекцию? 

по нажатию другой нопки делаю -  

myCollection.add(ait1);

метки не появляются;



16 комментариев
Javascript,API 2.1,коллекции
как получить координаты метки, чей балун открыт?
d-m-i-g
1 июля 2014, 12:54

Дано:

  • в балун добавил собственную кнопку (balloonContentFooter: '<button id="selectButton">Выбрать адрес</button>')
  • обрабатываю её нажатия так:
    function handleClick(e){
        console.log(e.target.parentNode.parentNode.parentNode.getAttribute('id'));            console.log('TODO: launch rockets');
    }
    myMap.events.add('balloonopen', function (e) {
        selectButton = document.getElementById('selectButton');
        selectButton.addEventListener('click',handleClick,false);
    });
    myMap.events.add('balloonclose', function (e) {
        selectButton.removeEventListener('click',handleClick,false);
    });
  • строка, выделенная жирным, возвращает узел <ymaps id="id_14042040196506445036"...
  • затем пробегаю по списку всех меток и ищу метку, у которой свойство id_14042040196506445036 != undefined

 

Надо: в функции handleClick получить координаты метки, в чьём балуне была нажата кнопка.

Вопрос: есть ли способ лучше/проще, чем сделал я?

 

4 комментария
метка,API 2.1,события,балун
дизайн и 10000 меток на поле в 2500px*1900px
Ольга Стогова
1 июля 2014, 13:34

1. Скажите, пожалуйста, есть ли какой то гайдлайн для дизайнера про api ya map?

2. Мы хотим ограничить карту до площади 2500px на 1900px как в этом примере, http://api.yandex.ru/maps/jsbox/2.1/user_map и на эту ограниченную область засунуть 10000 меток, с разными иконками, без использования кластеризатора (мы не можем его использовать по концепции проекта), посередине будет область незаполненная метками, размеров около 500*400 px, и как бы утопленная в метках вокруг, 

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

 

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

 

2 комментария
кластеризатор,API 2.1
Система версионирования API Яндекс.Карт 2.1
a.chebotareov
1 июля 2014, 14:50

С выходом версии  API Яндекс.Карт 2.1 мы решили изменить существующую в 2.0 систему версионирования API.

Каждая новая версия API 2.1 становится релиз-кандидатом с отдельной веткой документации и доступна либо напрямую api-maps.yandex.ru/2.1.х (например api-maps.yandex.ru/2.1.11), либо при подключении api-maps.yandex.ru/2.1-dev.

api-maps.yandex.ru/2.1 переключается на новую версию API через некоторое время после публикации релиз-кандидата, если за это время пользователи не сообщили нам об ошибках, приводящих к деградации функиональности.

Система версионирования API Яндекс.Карт 2.1

С выходом версии API Яндекс.Карт 2.1 мы решили изменить существующую в 2.0 систему версионирования API.

В API 2.1 мы решили отказаться от версий stable.

Каждая новая версия API 2.1 становится релиз-кандидатом с отдельной веткой документации и доступна либо напрямую api-maps.yandex.ru/2.1.х (например api-maps.yandex.ru/2.1.11), либо при подключении api-maps.yandex.ru/2.1-dev.

api-maps.yandex.ru/2.1 переключается на новую версию API через некоторое время после публикации релиз-кандидата, если за это время пользователи не сообщили нам об ошибках, приводящих к деградации функциональности.

Рекомендуем в продакшене подключать api-maps.yandex.ru/2.1, а для разработки использовать api-maps.yandex.ru/2.1-dev.

 

Тип проектаРекомендуемая версия в production-окруженииРекомендуемая версия в разработке
Небольшие проектыКонструктор картКонструктор карт
Средние и крупные проекты, с простой картойПоследняя версия api-maps.yandex.ru/2.1Релиз-кандидат версия api-maps.yandex.ru/2.1-dev для проверки функциональности
Средние и крупные проекты, со сложной функциональностью картыФиксированная версия api-maps.yandex.ru/2.1.xРелиз-кандидат версия api-maps.yandex.ru/2.1-dev для проверки функциональности

 

Уверены, что благодаря этим изменениям работа карты в вашем проекте станет еще более стабильной.

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

Нет комментариев
API 2.1,версионирование
Фото объектов
Михеев Анатолий
1 июля 2014, 16:39

Добрый день.

У меня на сайте выводятся некоторое количество меткок объектов. Возможно ли в этой же карте выводить слой с фотографиями, как собственными, так и от яндекс.фото

Как тут, только еще и метки поверх свои

http://maps.yandex.ru/?ll=73.146210,49.843260&spn=0.432587,0.142095&z=12&l=map,pht

1 комментарий
maps.yandex.ru,API 2.1
Открытие балуна метки, объединенной в кластер. Лучший вариант.
happyman9
1 июля 2014, 16:42

В сентябре 2012 была вот такая статья:

http://blog.skahin.ru/2012/09/yandex-map.html

 

Сейчас июль 2014 - есть ли более правильная реализация темы?

5 комментариев
метка,кластеризация,API 2.1,балун
поиск метки по координатам
d-m-i-g
1 июля 2014, 18:25

Не нашёл способа, как переопределить балун результата поиска у searchControl, поэтому все результаты вывел на карту вручную, по событию searchControl load. Пришлось так же включить noPlacemark=true, чтобы не создавались дубли меток, а выбор результата поиска из списка обрабатывать вручную (событие searchControl resultshow). При показе метки в обработчике resultshow, сразу открываю её балун.

Вопрос: есть ли простой способ найти существующую метку, зная её координаты из результата поиска? Я сделал связь через свой индекс, хэш координаты -> метка, но может есть решение лучше?

2 комментария
метка,API 2.1,поиск
Мультиязычность + собств. SVG метки + динам. изменен. в адр. строке (напр: #0.000.000) в v.2.1
Егор
1 июля 2014, 20:32

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

 

У меня возникло несколько вопросов (v.2.1):

 

  1. Мультиязычность в собственной карте (EN, ES, RU);
  2. Собственные SVG метки;
  3. Динамическое изменение в адресной строке.

 

1. Есть ли возможность создать собственную мультиязчыную карту для как минимум на 3-х языках (Английского, испанского и русского (желательно бы еще французкий и немецкий). Метки те же, координаты те же, элементы управления те же, все то же, только при подключении менять "?lang=ru_RU".

2. Правильно ли я понимаю, что собственные SVG иконки меток будут работать, если вместо ссылки на растр. изобр. (.gif, .png) указать ссылку на вектор?

3. Динамическое изменение в адресной строке. Я видел такую фичу только на одном сайте. Смысл в том, что когда юзер взаимодействует с картой (изменят масштаб например), то в адрестной строке к общему адресу добавляется якорь и координаты типа: #4.687. А если юзер кликнул на какую-то метку, то к этому добавится еще и название метки: #4.687-metka1 (как-то так). Таким образом, юзерам удобно делиться картой друг с другом. Выбрал масштаб, выбрал метку, скопировал полученный адрес и отправил другу (никаких тебе "получить ссылку").

 

 

 

9 комментариев
API 2.1,SVG
Открытие балуна метки при наведении
fiphiker
1 июля 2014, 22:06

Здравствуйте, есть карта с метками, и список вне карты, где написаны названия меток.Как сделать чтоб при наведении на элемент списка открывался соответствующий балун метки?что то вроде этого
$('#test').on('mouseenter', 'div', function () {
placemark[1].openBalloon();
myMap.setCenter([coord1, coord2], 17);
});

3 комментария
метка,API 2.1,события,балун,геокодирование
Добавить заметности полигону?
Владислав Турман
2 июля 2014, 11:59

Здравствуйте. Появился вопрос не по API.

У меня при нажатии кнопки добавляются полигоны на карту. Некоторые покрывают огромные участки, а некторые размером с город.

 

Есть идеи как добавить заметности очень маленькому полигону на карте? Я думал надпись сделать, но кроме как меткой с макетом иконки в виде текста такое никак не реализовать. Цвета и заливку менять не желательно. (фон прозрачный, обводка зеленая)

Скриншот полигона: https://yadi.sk/d/EVhG8rg3VjiJ4

Нет комментариев
API 2.1,полигон,стили
Не работают стили GeoObjectCollection в элементе первого уровня
Ё
2 июля 2014, 12:40

Есть пример файла YMapsML в справочнике http://api.yandex.ru/maps/doc/ymapsml/1.x/ref/concepts/overview.xml

В этом примере у метки должен отображаться значок с помощью картинки http://info.maps.yandex.net/api/i/steelblue/dot.png, но вместо этого выводится стандартный значок.

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


Тестовая страничка с двумя картами, правильной и неправильной: http://xml.yuga.ru/testfile.html

исходный XML-файл из примера в справочнике http://xml.yuga.ru/ymapsml-example.xml

исправленный XML-файл из примера в справочнике с добавленным уровнем вложенности http://xml.yuga.ru/ymapsml-example-fixed.xml


1 комментарий
метка,API 2.1,YMapsML
Составная геометрия?
cjslade
2 июля 2014, 14:47

Есть какой-нибудь способ создания составного geometry-объекта? Например, в geometry.Circle вставить еще один geometry.Circle или как-то склеить. Чтобы GeoObject у них был один и синхронно перетаскивались (dragging).

 

На ум пока приходит только создание второго GeoObject'а и прослушка событий от первого.

2 комментария
API 2.1,круг
Не работает загрузка YMapsML
NIzhikov
2 июля 2014, 15:39

Привет.

 

Пытаюсь отобразить на карте файл в формате YMapsML

Код такой:

 

            $('#show_normal_example').click(function () {
                ymaps.geoXml.load('http://images.russoutdoor.ru/example2.xml').then(function (res) {
                    myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
                }, function (error){   // Вызывается в случае неудачной загрузки YMapsML-файла
                    alert('Ошибка: ' + error);
                });
            });     

Страничка на которой выполняется этот скрипт находится на localhost.
Файл доступен через браузер.
Возвращается ошибка 500 Internal Server Error.
В чем может-быть дело?
6 комментариев
API 2.1,YMapsML
Как правильно вставить координаты в Polygon?
zavodnro
2 июля 2014, 16:52

Привет!

У меня на карте создан Полигон, пользователи могут его редактировать и сохранять его значения.

Значения сохраняются в SQL и при перезапуски страницы от туда подгружаються.

Вопрос в том как правильно вставить координаты из SQL в созданный полигон (с учетом того что мы заранее незнаем сколько у него точек)

 

Сначала я брал координаты только что созданного и отредактированного полигона и переводил их в строку

 

formPoly.geometry._Dy._nn[0].join(' ');

 Получается такая строка 53.2223,50.3584 53.3223,50.4584 53.2223,50.3584

Из нее видим что получается пользователь создал 3 точки.

Далее эта строка сохраняется в SQL, выборка из SQL создает json параметр координат.

При перезагрузки страницы создается копия ранее созданного полигона, значение вставляються из SQL

Проблемма в том что конструктор координат полигона имеет следющий формат

  

  formPoly = new ymaps.Polygon(
            [
                [[ ],[ ]]
            ])

  и если я туда просто вставлю свою строку координат то получиться вот так:

 

  formPoly = new ymaps.Polygon(
            [
                [53.2223,50.3584 53.3223,50.4584 53.2223,50.3584],[53.2223,50.3584 53.3223,50.4584 53.2223,50.3584]
            ])

 Что конечно неверно.

 

Кто сталкивался с этим, как правильно вставить неизвестное количество координат?

6 комментариев
Javascript,координаты,API 2.1,полигон
AdministrativeArea в геокодере
russianlagman
2 июля 2014, 18:15

Вопрос следущий: почему для некоторых мест AdministrativeArea выставляется как "Сибирский Федеральный округ", а для многих прочих - в AdministrativeArea приходит название региона?

13 комментариев
геокодирование
значения полей YMaps.location
UserName
3 июля 2014, 01:04

Подскажите, а где взять перечень названий регионов и городов по России на основе которого возвращаются поля region и city?

10 комментариев
геолокация,API 1.x
Ищу специалиста для создания карты доставки
scrache1
3 июля 2014, 10:58

Карта доставки: 
1) Подгрузить KML, Показать карту доставки зум 9, центр 30,32 : 59,82 показать кастомный маркер на точке (7) на него при клике кастомый балун с html кодом ($office я тебе его передам.) 
1) алгоритм расчета доставки написал. Вызов поиска адреса доставки должен быть возможен из вне. При нахождении адреса доставки показать кастомный маркер местонахождения, передвинуть карту на центр маркета. зум 11 
2) возможность менять тип транспортного средства селектом изменяюще стоимость доставки по зонам //это в принципе я тоже описал, но мой пример возможно надо будет разбить по другому, поиск адреса одной функцией, показ/обновление балуна с ценой другой функцией, чтобы при наличии адреса только цену менять, короче сам разберешься. 
5) желательно ограничить поиск задаваемыми рамками, например только в Лен облости. Если трудно то забей 
6) покажи мне еще как цвета зон менять, через визуальный редактор выбор плохой 
7) поведение скрола – зумирование а не прокрутка 
8) пишем на api v 2.1 
9) набор кнопок (зум, выбор типа карты, показ пробок, прокладка маршрута, измерение расстояния)

10) код должен быть прокомментирован, очень хочу сам во всем разобраться но не получается

+Карта обычная: 
1) Показать карту доставки 65.7 58.2, зум 4 
2) Несколько кастомных меток (куданить воткни, сам потом выствлю) 
3) При клике на метку показ балуна с html из переменной. 


Карта для kml: 

http://maps.yandex.ru/?um=pZ_iWQ3O58qrDvOZhV3XNBTm13z_kSnq&l=map

Похожий пример 

http://petrovichstd.ru/services/delivery/map/index.php

Даю массив: 
$zones[(int)zone_id][ (int)car_type]['price'] = 500; 
$zones[(int)zone_id][ (int)car_type]['price_type'] = 'fix'; 
//пример 
$zones[1][4]['price'] = 1500; 
$zones[1][4]['price_type'] = 'fix'; 
$zones[4][1]['price'] = 13; 
$zones[4][1]['price_type'] = 'calc'; 

Вне карты расположу форму ввода адреса. 
Данный с нее соберу сам в одну переменную $address; 
Требуется исполнение некой функции 
find_address($address, $car_type){ 
If(зона найдена) { 
$zone_id = data; 

Else $zone_id = 4; 
$price = 0; 
$price_type = $zones[$zone_id][ $car_type]['price_type']; 
If($price_type == 'fix') $price = $zones[$zone_id][ $car_type]['price']; 
Else if ($price_type == 'calc'){ 
$km = ?? //получи как то дистанцию в километрах 
(округли в меньшую сторону до целых) 
$price = $km * $zones[$zone_id][ $car_type]['price']; 

//передвинуть карту 
//покза кастом маркера 
//Показ балуна с ценой доставки и деталями 
}


все предложения можно в скайп scrache_x4

2 комментария
API 2.1
API 2.1 geolocation.get Safari не поддерживает?
Куприянов Юрий
3 июля 2014, 15:14

Пример из песочницы http://api.yandex.ru/maps/jsbox/2.1/geolocation, в safari (5.1.7 windows, а также на IOS) не создается синяя метка

geolocation.get({
   ...
}).then(function (result) {

alert("success");
});

"success" не появится.

Так должно быть?

7 комментариев
Использование кнопок «Поделиться» в балуне метки
a.chebotareov
3 июля 2014, 15:33
Использование кнопок «Поделиться» в балуне метки

Вовлекайте еще больше пользователей. Мы подготовили пример, который показывает, как можно легко делиться метками в социальных сетях прямо с карты. Каждая метка содержит набор кнопок социальных сетей. Сам набор кнопок, а также другая информация, включая тексты и ссылки в сообщениях, может меняться в зависимости от настроек блока «Поделиться». В этом примере использована технология API Ya.share.

Код примера доступен на JSFiddle.

Пользуйтесь этим примером и присылайте свои собственные в комментариях. Напоминаем, что в нашем клубе разработчиков, на страничках в Facebook и ВКонтакте можно задавать вопросы на которые отвечают разработчики команды API Яндекс.Карт.

Нет комментариев
API 2.0,примеры