Клуб API Карт

июль 2012
Разделение меток на группы
surrealistik
1 июля 2012, 00:14

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

С 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 комментариев
метка,события,API 2.0,балун
Заголовок не указан
Егор Вавилов
1 июля 2012, 10:18

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

7 комментариев
Во время геокодирования перелёт к результату
serious2008.paschkevich
1 июля 2012, 16:04

Здравствуйте. Я вот пытаюсь модифицировать эту вещь

http://api.yandex.ru/maps/doc/jsapi/2.x/examples/searchform.html

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

Вот как тут примерно

http://api.yandex.ru/maps/doc/jsapi/2.x/examples/mappanto.html

 

Но я никак не могу соединить геокодирование и эту вещь

 

А так же ещё один вопрос. Мне изначально нужно центирровать на новосибирской области. Не подскажите координаты её?

1 комментарий
примеры проектов,метка,API 2.0,геокодирование
В Opera не отображается карта
surrealistik
1 июля 2012, 20:16

Opera Версия: 12.00  Сборка: 1467  Платформа: Win32  Система: Windows 7

 

Во всех браузерах карта отображается, а в Opera категоричеки не хочет:

FF

Opera + консоль DF

 

Opera как бы говорит что API не загружен им. Наверное таки потерялось где то? Хотя по сылке в теге script нормально переходить можно и открывается таки скрипт API.

В чём может быть дело?

КОд этой карты через конструктор сделан, API 2.0

UPD: Это не баг Яндекс карт, это баг оперы.

2 комментария
Opera
как задать минимальный зум в API 2.0?
wir2al
1 июля 2012, 20:48

map.setMinZoom(10);

как задать минимальный зум в API 2.0?

2 комментария
Кластиризация, подгрузка JSON
pangai
2 июля 2012, 06:11

 

Доброго времени суток друзья...

 

Подмогите решить задачу иль ткните пальцем, если где есть ответ - следующего содержания.

 

  1. Имеется много объектов - разбитые на группы (на примере - по ул. города) - данные получаю JSON
  2. Выводить на карту первоначально в виде кластеров (улица) с числом объектов
  3. По нажатии на кластер - с помощью подгузки, есть скрипт который в виде JSON отдает данные, вывести на карту объекты, посчитать максимальный масштаб - увеличить,  добавить кнопку "Убрать объекты" в меню инструменты...
  4. После закрытия развернутых объектов - вернуть кластеры - сменить масштаб.

 

По примерам все получается - а вот с небольшим дополнением не идет. В API 2.0 - не силен... Будут полезны любые советы, пояснения, ссылки...

 

 

 

 

Нет комментариев
Темизация балуна кластера
w1ldzer0
2 июля 2012, 08:46

Добрый день. Возникла такая проблема.

Создал свой лейаут для балуна кластера (в ymaps.templateLayoutFactory.createClass переопределил метод build). Вроде всё отлично, но появилась одна проблема - перестала пропадать иконка кластера при клике. Что бы не пытался сделать - ничего не получается. В какую сторону копнуть?

4 комментария
кластеризатор,API 2.0,балун
[API 2.0]
alexeytula
2 июля 2012, 10:57

Добрый день всем!

 

Помогите решить следующую проблему:

на карту вывожу несколько Placemark, при клике по которым нужно:

  1. Открыть Ballon со стандартным текстом "Идет загрузка" - это я могу :)
  2. Узнать, по какому именно Placemark был щелчок, и сделать соответствующий ajax запрос. У каждого Placemark должен быть ID - число, указывающее к какой странице я буду делать запрос.
  3. В Ballon вместо стандартного текста поместить результат ajax запроса.

 

Я не могу понять, каким образом при создании Placemark мне указать идентификатор страницы которую загружать и как получить его в обработчике "click"

Вот мой код:

var placemark = new ymaps.Placemark(мои координаты,{balloonContent: 'Загрузка...'},{});

placemark.events.add("click", function (e) {мой обработчик, который пока только показывает Ballon});

myMap.geoObjects.add(placemark);

6 комментариев
метка,API 2.0,AJAX,балун
Проблема с ajax и маркерами
filondesign
2 июля 2012, 12:13

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

Вроде все хорошо но есть одно НО... Маркеры вставляются только по второму клику.
С первого раза не вставляются.
Что делать? 

$('#rubrics ul.level_3 li a').click(
        function() 
        {
            var coord = getCoordinats();
            for (i = 0; i < coord.length; i++)
            {
                var properties = 
                {
                    iconContent: coord[i].id,
                    balloonContent: coord[i].content,
                };
                    
                    myPlacemark = new ymaps.Placemark(coord[i].point.split(','), properties);
                    // Добавляем метку в коллекцию.
                myCollection.add(myPlacemark);
            } 
        }
    );    
17 комментариев
метка,API 2.0,AJAX,балун
API 2.0 - Получение доступа к стилю объекта GeoObject, а также содержимому балуна
Topor Alexei
2 июля 2012, 13:22

Как можно поменять стиль метки и как получить доступ к содержимому балуна для метки в АПИ 2.x

Пытаюсь поменять стиль для меток на карте, которые я загружаю

ymaps.geoXml.load(url).then(function (res) {
    res.geoObjects.each(function (item) {
        item.options.preset = 'twirl#houseIcon';
        myMap.geoObjects.add(item);
    });
}

Но так не выходит. В firebug-e смотрю, а у объекта item.options нет свойства preset.

Если использовать debug версию библиотеки, то я заметил, что есть такое свойство item.options._options.preset и код item.options.preset = 'twirl#houseIcon'; работает.

Аналогичный вопрос про доступ к содержимому балуна для метки.

в debug версии я могу обратиться: item.properties._data.name и item.properties._data.balloonContentBody

Как понимаю item.options._options и item.properties._data приватные свойства и в релиз версии подвергаются оптимизации и меняют свои названия.

Поидее делаю что-то не так. Как можно поменять стиль метки и как получить доступ к содержимому балуна для метки?

3 комментария
метка,API 2.0,балун,YMapsML
Пример: автоматическое переключение на Народную карту
tekunova
2 июля 2012, 15:58
Пример: автоматическое переключение на Народную карту

 

===Пример не актуален. В версии API 2.0.20 переключение на Народную карту по умолчанию включено у всех пользователей. Отключается опцией yandexMapAutoSwitch.===

В марте на Яндекс.Картах появился новый слой — Народная карта. Если нет подробной схемы какого-нибудь города, при приближении карты вы автоматически переключаетесь на «народный» слой.

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

Код на гитхабе.

Посмотреть пример в новом окне.

Надеемся, это сильно упростит вам задачу. Ждем примеры ваших проектов!

1 комментарий
API 2.0,народная карта,примеры,статьи
Маршрутизатор
s.dreval
2 июля 2012, 16:20

Подскажите, есть ли во второй версии апи Editor для маршрута? то есть когда построили уже маршрут и нанесли на карту, то можем потом его изменять перемещением точки маршрута как в первой версии и есть ли какие-то функции, чтоб не отображались метки в начале пути и в конце и небыло балунов на маршруте?

7 комментариев
маршрутизация,API 2.0
Узнать диапазон ГЕО координат тайла, отрисованном в области карты API 2.0
browserquest
2 июля 2012, 18:42

Добрый день!

 

Дано:

- Пользователь перетащил карту стандартным drag&drop 

- В область карты отрисовался тайл

- API 2.0

 

Задача:

- узнать номер тайла

- узнать диапозон гео координат попадающих в этот тайл

 

Спасибо!

2 комментария
API 2.0,тайлы,область видимости
Макет иконки кластера - как?
konclave
2 июля 2012, 19:05

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

 

Делаю так:

var clusterLayout = ymaps.templateLayoutFactory.createClass('<div class="map-cluster">!</div>');

var clusterer = new ymaps.Clusterer();

 

clusterer.createCluster = function (center, geoObjects) {

                var cluster = ymaps.Clusterer.prototype.createCluster.call(this, center, geoObjects);

                cluster.options.set('layout', clusterLayout);

                return cluster;

            }

 

На сколько я понимаю, переопределенный createCluster вызывается при вызове that.clusterer.add()

Почему же тогда не меняется лэйаут?

7 комментариев
метка,кластеризатор,API 2.0
перенос строк в балуне
Павел
2 июля 2012, 21:24

Нанес объекты на Яндекс карту. Многоугольники с балунами. В балунах текст. Все красиво, где расставлял переносыстрок - там они есть.

Подгрузил на страничку XMapsML фаил, весь текст в одну строку :(

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

Отрисованная карта: http://maps.yandex.ru/?um=2AFK6Hx6e5RmIizO09Ai_tdW5VaGwE8O&l=map

(Зум только отдалите немного чтоб оьекты увидеть)

На страничке подгруженная через XMapsML фаил: http://fishmap.narod2.ru/

4 комментария
Расчет времени маршрута с учетом пробок в другое время?
wir2al
3 июля 2012, 02:03

Я построил маршрут и вывел время в пути с учетом пробок, если поехать прямо сейчас. А есть ли возможность произвести расчет времени маршрута с учетом пробок в другое время (выбираемо, например в четверг в 17:00)?

6 комментариев
маршрутизация,API 2.0,пробки
Получить название местности из геокодера
wir2al
3 июля 2012, 02:18

В JS ноль.

В геокодер вбиваю название местности, например Киевский вокзал. geoto.geometry.getCoordinates() — координаты Киевского вокзала.

А как вывести название текущей местности (в данном случае Киевский вокзал или метро Киевская? Нужно, чтобы назвать метку в маршруте. В инпут же я могу как угодно написать, а назвать нужно красиво.

API 2.0

1 комментарий
API 2.0,геокодирование
Конструкция «Геокодер 4 точек + маршрут из этих точек»
wir2al
3 июля 2012, 02:36

Ребята, выручайте.

 

Задача:

Есть 4 инпута с адресами, которые, выглядят примерно так: «2-я Бауманская, 5», «Тверская, 4», «Большая Никитская, 11», «Киевский вокзал». Необходимо произвести поиск в столице и области на карте этих адресов и вывести маршрут через эти адреса. Кол-во адресов может меняться от 2 до 4 (добавлением/удалением промежуточных точек типа Тверской и Большой Никитской). Метки адресов маршрута должны быть названы, причем не напрямую из инпутов (там может быть и грамматическая ошибка и строчные буквы), а обратным геокодированием точек маршрута (как на примере http://api.yandex.ru/maps/doc/jsapi/1.x/examples/geocodingreverse.html).

У меня получилась вот такая конструкция:  

 

ymaps.ready(init);
function init() {
        $('#map').empty();

        var myMap = new ymaps.Map("map", {
                center: [55.754178, 37.624678],
                zoom: 12,
                behaviors: ["default", "scrollZoom"]
            }, {
                minZoom: 10
            }
        );
        myMap.controls.add("zoomControl")
        .add("trafficControl");

        var from = document.getElementById("from").value;
        var to = document.getElementById("to").value;
        var through1 = document.getElementById("through1").value;
        var through2 = document.getElementById("through2").value;

        var myGeocoder = ymaps.geocode(from, {boundedBy: [[55.296944, 36.89326], [56.223008, 38.631846]], strictBounds: true, results: 1});
        myGeocoder.then(
            function (res) {
                if (res.geoObjects.getLength()) {
                    var geofrom = res.geoObjects.get(0);
                    var myGeocoder = ymaps.geocode([55.742904, 37.565767], {boundedBy: [[55.339351, 37.121501], [56.199283, 38.659999]], strictBounds: true, results: 1});
                    myGeocoder.then(
                        function (res) {
                            if (res.geoObjects.getLength()) {
                                var geoto = res.geoObjects.get(0);
                                var myRouter = ymaps.route([geofrom.geometry.getCoordinates(), geoto.geometry.getCoordinates()], {mapStateAutoApply: true});
                                myRouter.then(function(route) {
                                        var points = route.getWayPoints();
                                        points.get(0).options.set('preset', 'twirl#blueStretchyIcon');
                                        points.get(0).properties.set("iconContent", geofrom.geometry.getCoordinates());

                                            points.get(1).options.set('preset', 'twirl#redStretchyIcon');
                                            points.get(1).properties.set("iconContent", geoto.geometry.getCoordinates());

                                        route.getPaths().options.set({
                                            balloonContenBodyLayout: ymaps.templateLayoutFactory.createClass('$[properties.humanJamsTime]')
                                        });
                                        myMap.geoObjects.add(route);
                                    },
                                    function (error) {
                                        alert("Возникла ошибка: " + error.message);
                                    }
                                )
                            }
                        },
                        function (error) {
                            alert("Возникла ошибка: " + error.message);
                        }
                    )
                }
            },
            function (error) {
                alert("Возникла ошибка: " + error.message);
            }
        )        
};

 

 

 Т.е. для того, чтобы произвести геокодирование 2 адресов, приходится засовывать один геокодер в другой. С 4 адресами вообще ужас получится. Может можно как то это дело упростить?

P.S. [55.742904, 37.565767] — координаты, внутри которых производить поиск (прямоугольник содержащий в себе мск и область). Может можно как то задать в геокодере, чтобы искались адреса, наиболее близкие к центру мск?

22 комментария
маршрутизация,API 2.0,геокодирование
Аналог опции "backgroundMapType в апи 2.0
dstime
3 июля 2012, 16:51

Подскажите пожалуйста аналог опции "backgroundMapType", которая используется при создании карты из пользовательских тайлов, для карт апи 2.0

7 комментариев
API 2.0
IE8 выдаёт ошибку "new"
art028
3 июля 2012, 18:57

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

 

IE снова веселится надо мной)

Выдаёт ошибку:


Сообщение: Объект не поддерживает это свойство или метод

Строка: 201
Символ: 1
Код: 0
URI-код: http://www.mesta3d.ru/samara/new


Сообщение: Объект не поддерживает это свойство или метод
Строка: 320
Символ: 1
Код: 0
URI-код: http://www.mesta3d.ru/samara/new

За что? Что не так? 

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