Клуб API Карт

ноябрь 2011
Правильные геометрические фигуры на карте.
d1c2de
1 ноября 2011, 10:48

На примере API Яндекс.Карт Примеры. Многоугольник.

Выводится прямоугольник вместо квадрата, хотя смещение по  lat, lng одинаковое и равно 0.1

Тоесть нужно нарисовать фигуру и чтобы она отображалась на карте как:

квадрат, а не прямоугольник

круг, а не эллипс.

Есть функция:

function createRectangle (x,y,d){ 
 
    var polygon  =  new YMaps.Polygon([new    YMaps.GeoPoint(x,y),
                                                                   new YMaps.GeoPoint(x,y+d),
                                                                   new YMaps.GeoPoint(x+d,y+d),
                                                                   new YMaps.GeoPoint(x+d,y)]) ;
    return polygon;
        }
map.addOverlay(createRectangle(37.7,55.7,0.2)) ; 

 

3 комментария
API 1.x
FancyBox for WordPress и Яндекс api
KirilkaGPS
1 ноября 2011, 23:02

 

Имеется xml файл с картинкой, которая отображается в балуне. При клике на картинку она открывается не в лайтбоксе.

Пробовал добавлять к ссылке структуры типа:

onclick="$.fancybox(this);return false;">

onclick=\"iLoad('ляляля');return false\" rel=\"iLoad\"> 

Результата это не дало.

 

<a href="http://monitoring.navstar.com.ua/wp-content/uploads/2011/10/briefcase-gray32.png" onclick="$.fancybox(this);return false;">
<img src="http://monitoring.navstar.com.ua/wp-content/uploads/2011/10/briefcase-gray32.png" onclick="$.fancybox(this);return false;">
</a>

 

1 комментарий
API 1.x
Как изменить карту? изменился адрес фирмы
svgubareva
2 ноября 2011, 11:19

Добрый день, можно ли отредактировать уже имеющуюся карту на сайте, у фирмы в связи с переездом изменился адрес, на сайте соответственно нужно изменить схему проезда. Карту делали с помощью этого вервиса. Возможно ли ее отредактировать или нужно заново создавать?

1 комментарий
API 1.x
вывод карты через jQuery
drac0Sha
2 ноября 2011, 15:16

вопрос проблема в АПИ или в плохом знании jQuery )

 

Здравствуйте ) столкнулся с такой проблемой )

  1.  
  2. <script type="text/javascript">
  3. $(document).ready(function(){          
  4.     $("a[rel^='prettyPhoto']").prettyPhoto({
  5.         show_title: false,
  6.         deeplinking: false,
  7.         social_tools: '',
  8.         gallery_markup: '',
  9.         custom_markup: '<div id="YMapsID" style="width:604px; height:509px"></div>',
  10.         changepicturecallback: function(){ initialize()}
  11.     });
  12. });
  13. function initialize() {
  14.  var loc;
  15.  loc="Москва, Земляной вал, 50";
  16.         YMaps.jQuery(function() {
  17.             // Создание экземпляра карты и его привязка к созданному контейнеру
  18.             map = new YMaps.Map(document.getElementById("YMapsID"));
  19.             // Установка для карты ее центра и масштаба
  20.             map.setCenter(new YMaps.GeoPoint(37.6455.76)10);
  21. // Добавление элементов управления
  22.             map.addControl(new YMaps.Zoom());
  23.             map.enableScrollZoom();
  24.             // Создание метки 
  25.            var geocoder = new YMaps.Geocoder(loc);
  26.             YMaps.Events.observe(geocoder, geocoder.Events.Loadfunction (geocoder) {
  27.              var geoCoords = geocoder.get(0).getGeoPoint(),
  28.          geoPlacemark = new YMaps.Placemark(geoCoords);
  29.          map.addOverlay(geoPlacemark);
  30.             })
  31.             // Установка содержимого значка метки
  32.             placemark.setIconContent('Щелкни меня');
  33.             // Добавление метки на карту
  34.             placemark.name = "Имя метки"// Заголовок балуна
  35.             placemark.description = "Описание метки"// Текст балуна
  36.             map.addOverlay(placemark);
  37.         });
  38. }
  39. </script>
  40.  


  1.  
  2. <p><a href="#?custom=true&width=604&height=509" rel="prettyPhoto" title="где !">Москва, Земляной вал,50</a></p>
  3.  


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

 

16 комментариев
API 1.x
Mapax.ru - Карта мнений
Dzedx
3 ноября 2011, 01:05

Mapax.ru - представляет собой голосование в режиме онлайн, результаты которого выводятся на «Яндекс.Карту», окрашивая регионы в зависимости от преобладающего мнения.

 

Так же есть возможность увидеть мнения каждого города в отдельности:

Проблема: Рунет насыщен голосованиями, соцопросами,  экзит-пулами на всевозможные темы, но их результаты сухие и ни о чем нам не скажут, пока их не облечь в красивую и понятную инфографику. Действительно, ну что вам могут сказать такие результаты опроса, как: 46% респондентов выступают за признание Абхазии, 54% против?
Кто конкретно против, а кто за остается непонятно всем, даже создателям опроса.

Охват: интернет-аудитория шести стран (Россия, Украина, Беларусь, Литва, Латвия, Эстония). При просмотре карты можно выбрать вид карт по регионам или по городам. С увеличением числа участников в проекте, будет видна дифференциация мнения по отдельным регионам внутри каждой страны.

При создании использовали: геотаргетинг, модуль регионов, дополнительные слои.

Жду конструктивной критики:)

13 комментариев
примеры проектов,балун,геокодирование
Смещение линии созданной в конструкторе карт проезда
Shiz89
3 ноября 2011, 11:06

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

Вот код карты

http://dumpz.org/97928/

Посмотреть карту можно тут, в конце страницы http://fmprofit.ru/contacts.html 

Нет комментариев
маршрутизация,ломаная,конструктор
Получать информацию о метках из раздела "Мои карты"
Alexissite
3 ноября 2011, 12:26

В учебных целях мне необходмо написать приложение, которое узнает user POI сразу, как только точку создали, и дальше как-то обрабатывает эту точку. Приложение локальное. Вопрос: должна ли я для этого сделать на локалхосте страницу, где поместить карту, или возможно просто взаимодействие с метками пользователя, которые он ставит в разделе "мои карты"? Если возможно, то как получать уведомления о том, что пользователь создал метку? В API ничего такого не нашла.

Спасибо.

2 комментария
API 1.x
Необходимо получить названия всех населенных пунктов, встречающихся по маршруту
meteo.ua
4 ноября 2011, 20:54

Здравствуйте. Есть построенный маршрут. Например: Киев-Одесса. Подскажите, как выбрать и отметить все населенные пункты, встречающиеся по этому маршруту. Например Любашевка, Умань, Белая Церковь.

Стандартный пример http://api.yandex.ru/maps/jsapi/examples/maproutersegments.html не подходит, так как отдает только маршрут по городу и название трассы.

Заранее спасибо

10 комментариев
API 1.x
Стили ссылок destinations
KirilkaGPS
6 ноября 2011, 00:06

1) Стили ссылок из контейнера не действуют на последний элеменнт контейнера  destinations в независимости от того какой это элемент.  в частности на 'aaдесfа' 

Пациент тут.

2) Как при переходе открыть балун, если он задан в xml файле в слое mk, и все что его обьеденяет с  destinations - координаты. (пример по ссылке "киев".)

 

  callback : function () {
        mk.openBalloon(

Не работает.

2.1) можно ли по сути брать координаты центра карты, смотреть есть ли точка с такими координатами в xml если есть открывать для нее балун.

3)Как обойти запрет:

Игнорируются атрибуты, отвечающие за вызов обработчиков событий

Атрибуты, отвечающие за вызов обработчиков событий (onclick, onchange, onkeypress и т. д.), удаляются из элементов вместе со своим содержимым.

Пример:

 

<div onclick="alert(\"XSS\")">$[name]</div>

 

заменяется на

 

<div>$[name]</div>

 

Ниже привожу код.

<head>
<script type="text/javascript">
        window.onload = function () {
            var map = new YMaps.Map(document.getElementById("YMapsID")
            destinations = {
                    'Киев' : new YMaps.GeoPoint(30.552502,50.448638),
                    'Петербург' : new YMaps.GeoPoint(30.313497,59.938531),
                    'Екатеринбург' : new YMaps.GeoPoint(60.617435,56.829748),
                    'Одесса' : new YMaps.GeoPoint(30.7058,46.466444),
                    'Одесrа' : new YMaps.GeoPoint(31.7058,43.466444),
                    'Одесfа' : new YMaps.GeoPoint(36.7058,36.466444),
                    'aaдесfа' : new YMaps.GeoPoint(38.7058,31.466444),
                };
            map.setCenter(new YMaps.GeoPoint(30.7058,46.466444), 17);
 // Ссылка на контейнер для меню
            var menuContainer = YMaps.jQuery('#mapMenu');
            // Генерирование меню
            for (var item in destinations) {
                // Используем замыкание, чтобы работать с конкретным свойством объекта
                (function (title, geoPoint) {
                                //Красим ссылки
                                menuContainer.find('a').css('color', '#575757');
                                menuContainer.find('a').css('color', '#575757');
                                menuContainer.find('a').css('margin-left', '690px'); 
                                menuContainer.find('a').css('position', 'relative');
                                menuContainer.find('a').css('top', '-450px');
                    // Создаем ссылку, обернутую в тег <p> для более приятного визуального восприятия
                    YMaps.jQuery("<li><a href=\"#\">" + item + "</a></li>")
                        .find('a')
                            // Создаем обработчик по щелчку на ссылке
                            .bind('click', function () {
                                
                                // Подчеркиваем все ссылки
                                menuContainer.find('a').css('text-decoration', 'underline');
                                                              
                                // Кроме той, на которую щелкнули
                                YMaps.jQuery(this).css('text-decoration', 'none');
                                
                                // Перемещаем карту
                                map.panTo(geoPoint, {flying:1}
                                return false;
                            })
                            .end()
                        
                        // Записываем элемент списка в список
                        .appendTo(menuContainer);
                })(item, destinations[item])
            }
map.addOverlay(mk);
map.addControl(new YMaps.ScaleLine()
        map.addControl(new YMaps.Zoom()
           map.enableScrollZoom(
YMaps.Events.observe(mk, mk.Events.Load, function (mk) {
    mk.get(0).forEach(function (obj) {
        obj.setBalloonOptions({
            margin: [10, 20, 30, 40], maxWidth:300
        }
    }
}
}
    </script>
</head>
<body>
<div id="YMapsID" style="width:680px;height:430px"></div>
<ul id="mapMenu"></ul>
</body>

 

4 комментария
API 1.x
Как убрать с карты динамически показанные метки?
ivedu-ru
7 ноября 2011, 01:33

 Принцип:

Есть порядка 200 точек (меток), есть несколько кнопок (галочек) управления. Все эти 200 точек могут биться на несколько типов учреждений (например, многоэтажка, частный дом и т.п.). Но в то же время могут биться и на другие группы, например, магазин, ларек и т.п. Т.е. все эти маленькие группы могут перекликаться.

Вопрос:

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

Код примерно следующий:

var uchr_arr = [];
var placemark = [];
placemark[0] = new YMaps.Placemark(new YMaps.GeoPoint(xxx,xxx), {style: \"icons#style_school_sov\"});\n
placemark[0].name = 'Учреждение 1';\n
placemark[0].description = 'Описание учреждения 1';\n
//uchr_arr - [id, uchr_type, rajon, number]
uchr_arr = uchr_arr.concat([["0", "school", "sov", "52"]]);\n
placemark[1] = new YMaps.Placemark(new YMaps.GeoPoint(xxx,xxx), {style: \"icons#style_school_sov\"});\n
placemark[1].name = 'Учреждение 2';\n
placemark[1].description = 'Описание учреждения 2';\n
uchr_arr = uchr_arr.concat([["1", "dou", "len", "44"]]);\n
//и еще раз 200 в php-цикле
//дальше создали меню с галочками, и нажимаем на эту галочку:
li.bind(\"click\", function () {
    var link = YMaps.jQuery(this);
    if (link.attr(\"checked\")) {
        var filter_add = new Array();
        filter_add = ivedu_find_objects(uchr_arr, link.attr(\"id\"), map);
        for (i=0; i<filter_add.length; i++) {
            var uchr_id = uchr_arr[filter_add[i]][0];
            map.addOverlay(placemark[uchr_id]);
        }
    }
    else
    {
        var filter_remove = ivedu_find_objects(uchr_arr, link.attr(\"id\"), map);
        for (i=0; i<filter_add.length; i++) {
            var uchr_id = uchr_arr[filter_remove[i]][0];
            map.removeOverlay(placemark[uchr_id]);
        }
    }
});
//функция поиска по районам:
function ivedu_find_objects(uchr_arr, id, map) {
    var filter_out = [];
    for (i=0;i<uchr_arr.length;i++) {
        if (id==0) { var rajon = \"sov\"; }
        if (id==1) { var rajon = \"okt\"; }
        if (id==2) { var rajon = \"len\"; }
        if (id==3) { var rajon = \"fr\"; }
        if (uchr_arr[i][2] == rajon) {
            filter_out = filter_out.concat(uchr_arr[i][0]);
        }
    }
    return filter_out;
}

Т.е. по сути, есть массив точек. Часть этих точек размещаются на карте с помощью map.addOverlay(placemark[uchr_id]), но потом не хотят удаляться. Почему?

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

Пробовал через uchr_arr[i].filter(function (obj) { } (естественно с корректным формированием uchr_arr в самом начале), но та же песня - создаваться точки-то создаются, а вот удаляться никак не хотят.

Есть, конечно, вариант "из пушки по воробьям" - при удалении части меток удалять абсолютно все, а потом заново выставлять те метки, которые не должны быть удалены, но, думаю, должно быть более корректное решение.

1 комментарий
события,API 1.x
Заголовок не указан
igoryan-909
7 ноября 2011, 14:58

Я занимаюсь разработкой городского информационного справочника и у меня есть пара вопросов по пользовательскому соглашению. А именно по этому пункту:

 

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

 

Допустим, я использую обратное геокодирование и при клике по номеру дома открывается балун с информацией типа: "Украина, Донецкая область, Донецк, Калининский район, проспект Ильича, 9".

 

Вопрос первый: будет ли считаться нарушением, если я выведу в балун "пр. Ильича, 9"? Ведь по сути, если это справочник конкретного города, зачем выводить в балун информацию о том, что это "Украина, Донецкая область, Донецк".

Вопрос второй: будет ли считаться нарушением, если этот полученный результат будет отправляться в мою базу данных и из моей базы данных по соответствию будут выводиться организации?

 

То есть схема следующая. При клике по номеру дома выводится такой балун:

 

пр. Ильича, 9

Тип: Жилой дом, 5 этажей

Организации(4)


вместо:

Украина, Донецкая область, Донецк, Калининский район, проспект Ильича, 9
2 комментария
API 1.x
Как задать стиль css балуна?
alxcube
8 ноября 2011, 00:42

Искал, искал (кстати, очень неудобно разбросана документация и прочее по API), но так и не нашел никакого конкретного примера: как изменить (до неузнаваемости, в целях интеграции с дизайном сайта) внешний вид балуна? Понимаю, что можно переопределить css классы у себя на сайте, но тут где-то писали, что это кривовато, ибо в дальнейшем классы могут быть переименованы и т.п. Подскажите пожалуйста, как напрямую задать бэкграунды, рамки и прочие css свойства элементов балуна

7 комментариев
API 1.x,балун,CSS
Как отловить событие - клик мышкой?
Андрей
8 ноября 2011, 06:18

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

Чего я хочу получить: 

   1. С помощью модуля "Слои активных областей" нарисовать здания.

   2. При наведении на здании, подсветить здание - нарисовав полигон.

   3. При клики по нарисованному полигону запустить ajax-запрос.

Я предпалогал, что на п.3 должен сработать код:

 

//Ловим событие при клики на дом poligon
YMaps.Events.observe(polygon, polygon.Events.Click, function () {
   alert("Щелк!");
}

 

но событие не обрабатывается.

Вопросы:

1. Почему не обрабатывается событие?

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


5 комментариев
события,API 1.x,YMapsML
Как пересобрать layout? ( обновить шаблон )
Innuendo108
9 ноября 2011, 03:50

В API есть такой пример: 


 
// Создает HTML-элемент DIV, содержащий текст "пробный текст".
template = new YMaps.Template("<div>$[customText|текст по умолчанию]</div>");
YMaps.Templates.add("example#template", template);
var layout = template.build({customText: "пробный текст"});
layout.onAddToParent(document.body);
Таким образом я добавляю некоторые элементы в список. Но позже один из элементов изменился 
( данные его поменялись - $[customText] к примеру). Как мне пересобрать этот шаблон с новыми данными?

Я пытался - удалить элемент, собрать его заново и вставить, но проблема - посредством API я не могу
вставить элемент в нужное мне место ( между определенными элементами), я могу только сделать append
т.е. вставить в конец списка.


P.S. У элемента layout есть метод update(). Но как им пользоваться, в API абсолютно не описан он. Как передать новые данные?
2 комментария
API 1.x
Когда на картах появится Барнаул?
itc-labs
9 ноября 2011, 07:56

Уже который год ждем. Нам это нужно для сайта http://www.net-agenta.ru/show/offer/686467.html

http://www.net-agenta.ru/krasnoyarsk/kvartiri/offers/onmap.html

Для всех городов есть карты, а для Барнаула нет. А у нас там одна из самых высоких посещаемостей.

Город то все-таки большой, 650 тыс. населения.

2 комментария
API 1.x
Как правильно сформировать карту с меткой на ней
b0noI
9 ноября 2011, 12:40

Добрый день. Необходимо сформировать для сайта карту всего с одной меткой. Однак метка задана НЕ КООРДИНАТАМИ а адресом (т.е. ул. Улица 5). Пока я видел лишь примеры создания карты по координатам точки. Заранее спасибо.

 

ЗЫ: какой из вариантов API при этом использовать не имеет значения)

6 комментариев
метка
Заголовок не указан
atomsite66
9 ноября 2011, 13:45

Можно ли активировать кнопку "Получить информацию"?

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


1 комментарий
API 1.x
объект YMaps.location undefined
ALPODY
9 ноября 2011, 14:05

Сегодня столкнулся с такой проблемой.

Объект YMaps.location неопределен. При этом API загрузилось успешно: объект YMaps при этом определен. Кто-нибудь сталкивался с такой ситуацией ?

3 комментария
API 1.x
Очень простой вопрос. Как без лишних файлов поменять цвет метки
georgiy.akhaladze
9 ноября 2011, 19:09

Очень простой вопрос. Как без лишних файлов поменять цвет метки?

Я использую такой код:

 

map.addOverlay(new YMaps.Placemark(new YMaps.GeoPoint(32.593313, 46.640542))   

Спасибо, большое.

1 комментарий
API 1.x
Пользователь сам рисует область на карте, после чего...
NeoN2k
9 ноября 2011, 22:27

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

Интересует следующий вопрос:

Реально ли с помощью Я.Карт реализовать возможность пользователям рисовать произвольный многоугольник на карте, после чего будет выполняться поиск вхождений в этот многоугольник меток, которые оставляли другие пользователи. Причем результат будет выдаваться в виде набора ссылок (это будет результат поиска, либо на этой либо на отдельно странице) и каждая ссылка будет перенаправлять на нужную мне страницу, к которой привязана та самая точка на карте.

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

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

Если данные вещи реализовать посредством Я.Карт реально и выполнимо, то, прошу вас описать примерный алгоритм, документацию)) Ткнуть носом в общем в нужное русло))

Заранее благодарю!

3 комментария
API 1.x