Клуб API Карт

май 2013
Показ точек только в активной области
AcidCrash2005
2 мая 2013, 11:28

Стоист задача, взять функционал показа точек как тут http://realty.yandex.ua.

Т.е. нужно отображать общее кол-во точек в этой области, но показывать только 200, плюс изменть отображение при маштабировании карты.

Подскажите каким образом можно этого добиться.

 

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

myMap.events.add('boundschange', function (event) {

 if (event.get('newZoom') != event.get('oldZoom')) {

 

 }

 if (event.get('newBounds') != event.get('oldBounds')) {

 

  }

});


Я так понимаю, нужно написать AJAX запрос, который будет возвращать 200 точек которые будт ображаться в этой области и общее количество точек.

Но как узнать, что точки пренадлежать этой области?

Помогите пожалуйста?

5 комментариев
API 2.0,область видимости
Различный тип точек
AcidCrash2005
2 мая 2013, 11:34

На карте создаю 2 типа маркера, платная клиника и бесплатная.

По дизайну они отличаются.

При клике на маркер, нужно менять высоту балуна который всплывает, в зависимости на какой маркер был клик.

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


Вот так выглядять мои 2 маркера, они ни чем не отличаются кроме картинки. Можно как-то задать каждому типу маркера какой-нибудь идентификатор, а потом при клике считывать его.

 

    var mark_pay = {
        iconImageHref: 'images/map_pay_point.png', // картинка иконки
        iconImageSize: [67, 48], // размеры картинки
        iconImageOffset: [-31, -19], // смещение картинки
        hideIconOnBalloonOpen: false,
        balloonLayout: 'my#simplestBCLayout',
        balloonShadow: false
    }
    // бесплатная метка
    var mark_free = {
        iconImageHref: 'images/map_free_point.png', // картинка иконки
        iconImageSize: [20, 20], // размеры картинки
        iconImageOffset: [-13, -10], // смещение картинки
        hideIconOnBalloonOpen: false,
        balloonLayout: 'my#simplestBCLayout',
        balloonShadow: false
    }

 

2 комментария
метка,API 2.0
Показывать область кластера версия 2
Nekulin
2 мая 2013, 11:57

Всем привет!

 

clusterer = new ymaps.Clusterer({
    clusterDisableClickZoom: true,
    centered: true,
    min_size: 14,
    preset: 'twirl#blueStretchyIcon',
    maxZoom: 16,
    claster: {
        geometry: 0
    }
});
clusterer.add(myGeoObjects);

 

Как можно показывать не всю карту а только ту область чтоб поместилистиль кластеры

4 комментария
API 2.0,кластеризатор,область видимости
В Firefox (20.0.1) исчезают метки при перемещении / масштабировании карты
DelLitt
2 мая 2013, 12:52

На карту при первой загрузке добавляются метки, расположенные воль нескольких радиусов от определенной точки центра. При клике на метке осуществляется переход на более подробный вид (масштаб увеличивается, карта центрируется относительно метки), в котором появляются другие метки, попадающие в условную область, занимаемую предыдущей меткой. Метки предыдущего вида скрываются (uiObject.options.set('visible', false)). 

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

В чем может быть причина? В Chrome, Opera и IE такого не происходит.


Спасибо!

5 комментариев
Отрисовка своих иконок и добавление своего класса метке
ArchAL
2 мая 2013, 18:01

Задача: нужно создавать динамически иконки из 1-5 различных объектов и добавлять их на карту. Всего объектов будет около 20, но для 1ой метки не может быть более 5. Отрисовка иконки объектов происходит по следующему принципу: если объектов 1 то создаётся круг 1 цвета, если два, то круг разбивается на 2 цвета и т.д. Прорисовать все иконки заранее не представляется возможным и количество объектов может увеличиваться. Кроме того, необходимо к каждой метке добавить класс. Если иконка отрисована скажем для объектов 1, 3 и 7, то должны быть добавлены классы с1, с3, с7 для метки. Это нужно для группирования иконок.

Для большего понимания задачи: http://www.greenpeace.org/russia/ru/campaigns/ecodom/trash/recyclemap/ (карта приёма вторсырья у greenpeace)

Я не понимаю как такое реализовать...

Допустим я отрисую всё в canvas как потом этот объект добавить как иконка?

4 комментария
метка,API 2.0
Не работает balloonIconImageHref
ArchAL
2 мая 2013, 21:15

 

var myPlacemark = new ymaps.Placemark([56.0112, 92.874], {
    // Свойства
    // Текст метки
    balloonContentBody: 'Здесь мой текст'
}, {
    hideIconOnBalloonOpen: false,
    iconImageHref: 'img/green.png',
    iconImageSize: [30, 36], // размеры картинки
    iconImageOffset: [-15, -36], // смещение картинки
    balloonContentSize: [250, 120],
    balloonLayout: 'default#imageWithContent',
    balloonIconImageHref: 'img/balloon.png',
    balloonImageOffset: [-149, -167],
    // Размеры картинки балуна
    balloonImageSize: [300, 137],
    // Балун не имеет тени
    balloonShadow: false
});

 
Хочу поменять стиль балуна, но ничего не получается. На карте пустой фон, содержимое открывается корректно. Создал фон у содержимого балуна, всё норм, но как-то не эстетично... Подскажите что не так делаю?

1 комментарий
API 2.0,балун,макеты
Меню и кластеризация
igdev
2 мая 2013, 22:44

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

points[idx].balloon.open();

но, если точка в кластере, то определить-то это я смог:

 

var geoObjectState = cluster.getObjectState(points[idx]);
if (geoObjectState.isClustered) {
    ...
}

 

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

Буду очень признателен за правильное направление движения к решению.

13 комментариев
меню,кластеризатор,API 2.0,балун
Определение центра карты
medunytsya
3 мая 2013, 12:33

Здравствуйте! Не так давно начал использовать карты и столкнулся с проблемой.

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

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

Можете посоветовать в какую сторону копать? Осталось реализовать только это, в кучу связать не вышло. По отдельности и то и то работает.

3 комментария
API 2.0,геокодирование
Реализация A* на карте
Віктор Дзундза
3 мая 2013, 14:13

Всем привет! мне нужно реализовать A* для поиска оптимального маршрута автобусов с точки А в Б.

Я думаю первое что мне нужно это список контрольных точек на карте для построение графа поиска.

Как тут я думаю http://theory.stanford.edu/~amitp/GameProgramming/MapRepresentations.html#road-maps

Как их получить?

2 комментария
маршрутизация,API 2.0
Event баг
nolan23
4 мая 2013, 12:32

Нашел багу в event

 

var myMap;

 

// Дождёмся загрузки API и готовности DOM.

ymaps.ready(init);

 

function init () {

    // Создание экземпляра карты и его привязка к контейнеру с

    // заданным id ("map").

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

        // При инициализации карты обязательно нужно указать

        // её центр и коэффициент масштабирования.

        center:[55.76, 37.64], // Москва

        zoom:10

    });

   

    myMap.events.add('click', function() {

       var coords = myMap.getCenter();

        myMap.events.fire("myclick", {coords: coords, c: coords});

    }).

        add('myclick', function(e) {

            alert(e.get('c').join(','));  // работает

            alert(e.get('coords').join(',')); // не работает

        });

 

    document.getElementById('destroyButton').onclick = function () {

        // Для уничтожения используется метод destroy.

        myMap.destroy();

    };

 

}

 

10 комментариев
события,API 2.0
Поиск как на maps.yandex.ru
Danilov.s.p
4 мая 2013, 15:28

Друзья, помогите решить задачу.

 

Нужно сделать Ajax поле вода городского адреса.

 

Например:

 

Вводим : Титова

Выдается 

улица Титова Ярославская Область

Улица Титова Московская область и ид.

 

Как это сделано у Yandex карт.

3 комментария
поиск,API 2.0
Балун не открывается на карте
Wixion
5 мая 2013, 16:51

Очень прошу помощи, т.к. вожусь уже несколько дней. Нужно чтобы при нажатиии на ссылку "Санкт-Петербург" открывалась соответствующая метка. У меня ничего не происходит, и я не могу понять где и что не так. Кто-ть может помочь? Здесь я приведу только часть кода (он очень большой) полностью можно посмотреть на: http://www.test.wix-master.ru/index.php/2013-04-04-13-00-54

И заранее всем спасибо!

 

 

<script type="text/javascript">
    YMaps.jQuery(window).load(function () {
        var map = new YMaps.Map(YMaps.jQuery("#YMapsID-271")[0]);
        map.setCenter(new YMaps.GeoPoint(50.29, 59.95), 4);


var placemark1 = new YMaps.Placemark(new YMaps.GeoPoint(30.438174,59.894044),{style: "default#redSmallPoint"});
placemark1.description="<h1>Санкт-Петербург</h1><a href='http://profisnast.ru/catalogue/?c=193'>ПрофиСнасть</a><br />пр.Обуховской Обороны, 86 лит. А <p>тел. 412-74-77   </p><span>Тест-Драйв</span>";
        map.addOverlay(placemark1);

var placemark2 = new YMaps.Placemark(new YMaps.GeoPoint(30.494741,59.885435),{style: "default#redSmallPoint"});
placemark2.description='Мотосалон "Кудрово"<br />пересечение КАД и Мурманского ш. <p> тел. 8(981) 703-00-33</p>';
        map.addOverlay(placemark2);

.....

 

$('#town').click(function(){     
    map.openBalloon(new YMaps.GeoPoint(30.383915,59.883458),  '<h1>Санкт-Петербург</h1>Мотосалон "Mokik" <BR>'+"<a href='http://mokik.net/polar-fox.php'>MOKIK.NET</a>"+'<BR>ул.Фучика,12<p>тел. 327-66-83; 972-56-19</p> <br />ПрофиСнасть <br /> пр.Обуховской Обороны, 86 лит. А <p>тел. 412-74-77   </p>');   
    });
$('#town1').click(function(){
    map.openBalloon(new YMaps.GeoPoint(37.405291,55.867182), '<h1>Москва</h1>Мотосалон <a href="http://velomoto.pro/">VELOMOTO.PRO</a><br />72-ой км.МКАД, Путилковское шоссе 21 <p> тел.8(495) 77-11-272; 8(495) 545-79-47  </p>');
    });
   
    $('#town33').click(function(){
    map.openBalloon(new YMaps.GeoPoint(91.413822,53.713894), '<h1>Абакан</h1> "ИП Зуев Анатолий Михайлович"<br />ул. Пушкина 213 <p> Телефон 8(3902)30-52-55 </p>');
    });
   
$('#town2').click(function(){
    map.openBalloon(new YMaps.GeoPoint(35.940319,56.851613), '<h1>Тверь</h1>ТД "Аквамоторс" <br /> ул. Вокзальная,24  <p> тел. 8(4822) 65-50-06; 8(920) 169-14-21  </p>');
    });

 

........

 

map.addControl(new YMaps.Zoom());
        map.addControl(new YMaps.ToolBar());
        YMaps.MapType.PMAP.getName = function () { return "Народная"; };
        map.addControl(new YMaps.TypeControl([
            YMaps.MapType.MAP,
            YMaps.MapType.SATELLITE,
            YMaps.MapType.HYBRID,
            YMaps.MapType.PMAP
        ], [0, 1, 2, 3]));
       
        function createObject (type, point, style, description) {
            var allowObjects = ["Placemark", "Polyline", "Polygon"],
                index = YMaps.jQuery.inArray( type, allowObjects),
                constructor = allowObjects[(index == -1) ? 0 : index];
                description = description || "";
           
            var object = new YMaps[constructor](point, {style: style, hasBalloon : !!description});
            object.description = description;
           
            return object;
        }
    });
</script>

 

<div id="YMapsID-271" style="width:900px;height:500px"></div>

 

<p><a href="javascript:void(0)" class="capital" id="town">Санкт-Петербург</a></p>
<p><a href="javascript:void(0)" class="capital" id="town1">Москва</a></p>
<p><a href="javascript:void(0)" id="town33">Абакан</a></p>
<p><a href="javascript:void(0)" id="town42">Братск</a></p>
<p><a href="javascript:void(0)" id="town3">Великий Новгород</a></p>
<p><a href="javascript:void(0)" id="town7">Вологда</a></p>
<p><a href="javascript:void(0)" id="town19">Екатеринбург</a></p>

 

 

P.S. Хелпы я смотрел, но... не помогло(

3 комментария
API 1.x,балун
Вывод балуна с данными организации из карты
c01nd01r
6 мая 2013, 05:22

Доброго времени суток!

Собственно сабж.

Можно ли выводить на сайте вот такую карту с балуном и данными в балуне из Я.Карт? 

В документации про такой вывод ничего не нашел. 

2 комментария
API 2.0,балун
Маршрут в Яндекс Картах
flancejob
6 мая 2013, 10:59

Всем добрый день.

Вот этот код. Добавляет две метки сразу. А третью по нажатию на кнопку (используя координаты в инпутах).
Суть в том, что еще по нажатию между первыми двумя должен строиться маршрут - а этот кусок кода почему-то не работает (см. в коде  /* вот тут */ с двух сторон ) .

В консоли
Uncaught TypeError: Object #<Object> has no method 'route' 

 

ymaps.ready(init);

var myMap,

    myPlacemark;

 

function init() {

    myMap = new ymaps.Map("map", {

        center: [55.76, 37.64],

        zoom: 16

    });

 

    myPlacemark = new ymaps.Placemark([55.7580, 37.6380], {

        content: 'Название1',

        balloonContent: 'Адрес2'

    });

 

    myPlacemark1 = new ymaps.Placemark([55.7605, 37.6405], {

        content: 'Название2!',

        balloonContent: 'Еще адрес'

    });

 

    myMap.geoObjects.add(myPlacemark);

    myMap.geoObjects.add(myPlacemark1);

 

    $('#setplace').click(function () {

        myPlacemark2 = new ymaps.Placemark([$('#myplacex').val(), $('#myplacey').val()], {

            content: 'трулала',

            balloonContent: 'ололо'

        });

        myMap.geoObjects.add(myPlacemark2);

 

        /* вот тут */

        ymaps.route([

            [55.7580, 37.6380],

            [55.7605, 37.6405]

        ]).then(function (route) {

            myMap.geoObjects.add(route);

        }, function (error) {

            alert('Возникла ошибка: ' + error.message);

        });

        /* вот тут */

    });

}

 

4 комментария
маршрутизация,API 2.0
Неправильно ставиться метка на карте в IE
bratyxa-servis
6 мая 2013, 13:44

Привет всем. У меня неправильно ставиться метка на карте в IE  обьяснять трудно вот сайт http://handyman.by 

логин: testlogin

пароль: 11111111

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

Нет комментариев
метка,IE,API 2.0
создание прямоугольника на карте
babarykin-yegor
6 мая 2013, 21:47

мне нужно создать квадрат на карте после открытия метки
 

metka=new ymaps.Placemark([a[0]-0, a[1]-0], {

minZoom: 16,

maxZoom: 90,

balloonContent: info

}, {

iconImageHref: "http://mapgame.yegorb.ru/images/house.png",

iconImageSize: [16,16],

iconImageOffset: [-8,-8]

});

код создания зоны

dom.events.add('balloonopen', function (e) 

{

myRectangle = new ymaps.Rectangle([ [a[0]-b, a[1]-b],[a[0]+b, a[1]+b]]);

myMap.geoObjects.add(myRectangle);

});

код удаления

dom.events.add('balloonclose', function (e) 

{

myMap.geoObjects.remove(myRectangle);

});

 

но при открытии не показывается этот прямоугольник

7 комментариев
метка,API 2.0,прямоугольник
Требуется доработка яндекс карт на сайте
Wixion
6 мая 2013, 23:27

Требуется доработка яндекс-карт. В частности, задача состоит в том, чтобы при нажатии на название города, на карте открывался соответствующий балун. Подробно можно посмотреть здесь: http://www.test.wix-master.ru/index.php/2013-04-04-13-00-54

Достаточно сделать, чтобы работало 5 городов.

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

3 комментария
работа
Карта инициализируется в неверных координатах
teleweborg
7 мая 2013, 02:45

Добрый день!

 

<div id="ymap" style="width:500px; height:500px;"></div>

<script type="text/javascript">

    ymaps.ready(function () {

        document.myMap = new ymaps.Map("ymap", {

            center: [37.768141, 44.714718],

            zoom: 16,

            behaviors: ["default", "scrollZoom"]

        });

    });

</script>

 

Показывает что выделенная зона не содержит тайлов, и действительно, отдаляюсь и вижу что по этим координатам в центре толи армения, толи турция, а должен быть новороссийск. статическая карта по тем же координатам показывает всё верно, например:
http://static-maps.yandex.ru/1.x/?ll=37.768141,44.714718&size=200,250&z=16&l=map&pt=37.768141,44.714718,pmbls&spn=0.005,0.005

 

Мало того, захожу на страницу:

http://api.yandex.ru/maps/tools/getlonglat/

ввожу в строку поиска теже самые координаты:

37.768141, 44.714718

и вижу верное местоположение!

 

В своей инициализации пробовал вводить координаты Москвы, всё ok, а эти не хотят отображаться!

На сайте юзается JQuery "http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"

 

Сайт в разработке и работает на localhost, в сети ещё не опубликован.

 

В общем магия какаято, с примесью баптизма. 

Помогите кто в курсе. 

HELP.

1 комментарий
координаты,API 2.0
Как задать метку на карте адресом?
ninzzo
7 мая 2013, 09:21

На своей странице создал карту. Теперьн а ней нужно поставить метку.

 

Везде задают только вот так:

myPlacemark = new ymaps.Placemark([55.8, 37.6]....


Как мне задать в формате myPlacemark = new ymaps.Placemark(Москва, мира 8, дом6) ????

Напишите правильную строку!!!!

Спасибо!

4 комментария
API 2.0,геокодирование
Вопрос по cluster.refresh()
igdev
7 мая 2013, 11:15

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

Есть метки, работаю с кластеризатором, соответственно часть меток в кластере отображаются, часть видна вне.... и вот такая ситуация наблюдается, допустим метка, которая сейчас не в кластере и видна сама по себе на карте, на кластер подвешен обработчик 'objectsaddtomap', выполняю:

PanTo на эту метку

обработчик 'objectsaddtomap' не вызывается, если карта показывает на местность недалеко от этой метки и обработчик вызывается, если карту перед PanTo мышкой сметить хорошенько, экрана на 3...

если в PanTo вешаю в callback cluster.refresh(), то обработчик 'objectsaddtomap' вызывается всегда...

Где-бы почитать поподробнее про cluster.refresh?

15 комментариев
кластеризатор,API 2.0