Клуб API Карт

август 2010
Фотомаппинг на карте и страны в виде активных областей
Антон
1 августа 2010, 12:55

Господа, приветствую!

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

И ещё есть потребность сделать на карте страны активными областями, при клике на которые должен происходить переход по ссылке (опять же, в рамках навигации по сайту). Нашёл в доках раздел про активные области, но обводить каждую страну полигонами - адский ад! Нет ли готовых решений данной задачи?

 

Спасибо,

Антон.

3 комментария
активные области,API 1.x
[РЕШЕНО] Ссылки и ballon - фильтрация объектов
Дмитрий Бабанов
2 августа 2010, 12:24

Доброго всем.
Суть проблемы - у меня отдельным скриптом (не js) строится список объектов. Вторым скриптом строяться метки этих объектов на карте. При клике на метку на карте - у меня все нормально открывается ballon и выделяется указанный объект по id. А вот как сделать обратное мне не понять.

При загрузку страницы у меня есть уже все объекты и все их метки на карте. При клике на объект мне надо открыть принадлежащий ему ballon не скрывая всех. Поступить как в примере с "вокзалами" не могу.

 

Решение

Иногда возникает необходимость
обратиться к объекту ballon соверешенно из другого места, и по некоторым
причинам не возможно / не хочется возиться с оверлеями. Выход из данной
ситуации, такой - при создании карты с метками, группируем их и даем
каждой метке уникальный id. А потом из любого места на страницы мы можем
обратиться к нужной нам метке по id - и вызвать ballon (фильтрация)

 

код карты:

         var group;

        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {
            // Создание экземпляра карты и его привязка к созданному контейнеру
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 6);
            map.enableScrollZoom();

            // Группа объектов
            group = new YMaps.GeoObjectCollection();
            map.addOverlay(group);

            // Добавление объектов
            var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37, 55));
            placemark.id = 1;
            group.add(placemark);

            var placemark2 = new YMaps.Placemark(new YMaps.GeoPoint(36, 54));
            placemark2.id = 2;
            group.add(placemark2);
        })

Код фильтрации и вызова ballon:

        function openPlacemarkById (id) {
            var filterObjects = group.filter(function (obj) {
                return obj.id == id;
            });

            filterObjects[0].openBalloon();

            return false;
        }

Ну и совсвенно код ссылки:

<a href="#"onclick="return openPlacemarkById(1)">1</a>


За помощь спасибо   - собственно он и автор этого всего )))

 

1 комментарий
меню,фильтрация
Эффект залипания
vitaly.kir
2 августа 2010, 16:21

Приветствую.

Имеется polyline, хочется, при наведении курсора мыши, рисовать на линии маркер. Т.е. в MouseEnter создаем и рисуем маркер на линии. В MouseMove перемещаем маркер по линии. В MouseLeave убираем маркер. Но, хочется рисовать маркер раньше, чем возникнет MouseEnter и удалять позже, чем MouseLeave, как в маршрутах Яндекса.

12 комментариев
маршрутизация,ломаная
Две карты на странице не отображаются вместе корректно
art f
2 августа 2010, 19:07

делаю их по очереди с адресами:

1. город, улица, дом

2. город, улица2, дом2

показывает серый квадрат и карту по адресу 2
 

задаю с адресами 

1. улица, дом

2. улица2, дом2 

показывает серый квадрат и карту по адресу 1

то есть все находит, но не отображает только что-то одно

вставляется плагином для WP. может быть из-за одинаковых имен переменных?

var map = new YMaps.Map(document.getElementById("map_1"));
var geocoder = new YMaps.Geocoder("город, улица, дом", {results: 1, boundedBy: map.getBounds()});

блаблабла настроки и балон

 

var map = new YMaps.Map(document.getElementById("map_2"));
var geocoder = new YMaps.Geocoder("город, улица2, дом2", {results: 1, boundedBy: map.getBounds()});

блаблабла настроки и балон

4 комментария
API 1.x,несколько карт
Клонирование polyline
vitaly.kir
2 августа 2010, 21:33

Всем привет.

Уважаемые, посоветуйте правильный способ клонирования polyline. Понятно, что можно запросить набор точек, а потом построить новую, но не будет ли это слишком затратно, если точек будет 200-300?

3 комментария
ломаная
как подружить геокодер и улицу с цифрами?
palas2005
3 августа 2010, 12:03
Столкнулся с такой проблемой, пологаю в каждом городе много улиц с цифрами, например 70 лет октября. У меня в городе несколько таких улиц, в которых меняется только цифра. При запросе к геокодеру в xml ответе выводятся все улицы с концовкой "лет октября" и на карту добавляется самая первая (чаще всего не та улица). Подскажите как подружить геокодер и такие улицы.  Чтобы убедится попробуйте вбить тут самара 70 лет октября
1 комментарий
геокодирование
YandexML и BalloonStyle
Андрей
3 августа 2010, 12:34

Использую YandexML, но нужно темизировать балун. Есть ли способ подружить эти вещи?

Мой вариант(не работает):

 var styles = new YMaps.YMapsML("...");
   
    YMaps.Events.observe(styles, styles.Events.Fault, function (styles, error) {
        alert("При загрузке стилей произошла ошибка: " + error);
    });
   
    var s = new YMaps.Style();
    s.balloonContentStyle = new YMaps.BalloonContentStyle(new YMaps.Template("<div>Это тестовый баллуун!</div>"));                   
    s.balloonStyle = {template: new YMaps.LayoutTemplate(gballoonlayout)};
    YMaps.Styles.add("#parentIcon", s);
   
    var placemark = new YMaps.Placemark(MAP.getCenter(), {
        style : {
            parentStyle : "#parentIcon"
        }
    });
    MAP.addOverlay(placemark); // здесь работает

    function gballoonlayout(){
      ...
    };

   
    // ---------------------------------------------------------------------------------------------   
    // Загрузка объектов
   
    var ml = new YMaps.YMapsML('...');
Для объектов из XML не работает, показывает стандартный балун. Хотя родительский стиль прописан.
7 комментариев
API 1.x,балун,YMapsML
Коэффициенты масштабирования Yandex и Google карт.
nodkz
3 августа 2010, 15:03

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

Возникли пара вопросов, помогите кто чем может ;)  

1) Необходимо знать сколько градусов (широты и долготы) влазит в 500 пикселей яндекс карты для каждого зума от 1 до 17?

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

Например:  ya.zoom.11 = gg.zoom.12 * K  (вот интересует именно K, для разных пар зумов обеих карт)

Спасибо!

4 комментария
API 1.x
Пользовательский объект с функциями и особенностями балуна
stokd
3 августа 2010, 18:52

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

Можно ли пользовательскому объекту (я сделал его по этому примеру) присвоить функции и особенности балуна, а именно: функцию автопозиционирования и возможность выделять содержащийся текст в объекте и восстановить работу правой кнопки мыши?

 — Мой объект.

6 комментариев
макеты
Стиль номеров домов
mplagiat
3 августа 2010, 21:08
Здравствуйте! Мы делаем проект на базе api на собственной карте. Но возникла сложность, хочется достигнуть качества яндекс карт. Подскажите как называется эффект примененный к обозначению номеров домов на картах яндекса? http://map.jino.ru/1.png
1 комментарий
API 1.x
Помогите разобраться с примером
Алексей Л.
3 августа 2010, 22:26

вот есть пример http://api.yandex.ru/maps/jsapi/examples/mapgroupmenu.html работы с несколькими группами объектов на карте.

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

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

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

спасибо

4 комментария
API 1.x
Пользовательские карты, загрузка тайлов
onedreamW
4 августа 2010, 10:53

Доброе время суток.

Вопрос по формированию урла тайлов.

На данный момент загрузка пользовательской карты у меня выглядит вот так (сделано по примеру):

                var options = {
                    tileUrlTemplate: "http://www.andboson.net/genmap/%z/tile-%x-%y.png",
                    backgroundMapType: YMaps.MapType.MAP,
                    isTransparent: true,
                    smoothZooming: false,
                    copyright: "maps.vlasenko.net"
                },
            myData = new YMaps.TileDataSource(options.tileUrlTemplate, options.isTransparent, options.smoothZooming);
            myData.getTileUrl = function (tile, zoom) {
                return this.getTileUrlTemplate().replace(/%x/i, tile.x).replace(/%y/i, tile.y).replace(/%z/i, zoom);
            }
            var MyLayer = function () {
                return new YMaps.Layer(myData);
            }
            YMaps.Layers.add("genshtab", MyLayer);
           myMapType = new YMaps.MapType(["map","genshtab"], "Генштаб", { textColor: "#000000", maxZoom: 13,  minZoom: 10});

хочется чтобы загрузка тайлов происходила быстрее, где ставить переменную %d, отвечающую за номер домена?

Примерно так:

http://map%d.andboson.net/%z/tile-%x-%y.png  ?

6 комментариев
слои,тайлы
Изменение размеров миникарты
zsrg
4 августа 2010, 11:05

Добрый день!

Как можно изменить размеры мини-карты?

Если делаю так:

YMaps.jQuery('.YMaps-mini-map').css('height','200px');

Размер изменяется, но происходит смещение положения на миникарте. :(

4 комментария
API 1.x,миникарта
Изменение масштаба после загрузки карты
Frank L.
4 августа 2010, 11:42

всем привет!

товарищи, создаю карту

        var map, geoResult;
        window.onload = function () {
            map = new YMaps.Map(document.getElementById("YMapsID"));
            map.addControl(new YMaps.TypeControl());
            map.addControl(new YMaps.Zoom());
            map.enableScrollZoom();
            showAddress("<?=$firm_info['city'].' '.$firm_info['adr'].' '.$firm_info['home']?>");
        }
       
        function showAddress (value) {
            map.removeOverlay(geoResult);
            var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
            YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
                if (this.length()) {
                    geoResult = this.get(0);
                    geoResult.setIconContent('<?=$firm_info['fullname']?>');
                    map.addOverlay(geoResult);
                    map.setBounds(geoResult.getBounds());
                }
            });
        }

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

map.setCenter(new YMaps.GeoPoint(" "), "14"); не исспользую, т.к. показываю карту по адресу.

2 комментария
масштаб,параметры карты,API 1.x
Как определить цвет пикселя на которую поставлена метка ?
pikarik
4 августа 2010, 15:51

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

Подскажите пожалуйста, как определить цвет пикселя карты на которую поставлена точка ?

Задача у меня такая:

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

Спасибо.

7 комментариев
API 1.x
Работа с YMapsML
Илья Ярмак
5 августа 2010, 09:39

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

Я только начинаю разбираться с картами. Задача - отобразить на крате объекты компании. После небольшого погружения "в тему" посчитал, что хранение объектов в XML (а точнее, в БД) очень удобно и масштабируемо. При попытке подключить XML-файл с локального сайта (http://localhost/...) получил ошибку. Когда стал разбираться, нашел такой пост: http://clubs.ya.ru/mapsapi/replies.xml?item_no=9867 , где объясняется, что этот файл должен располагаться публично.

1. Как мне поступить, если учесть, что мой сайт будет располагаться локально? Неужели нет каких то вариантов, ведь наверняка не я один такой.

2. Насколько вобще такая схема жизнеспособна - ведь я предполагал, что за время работы с картой пользователь может наделать несколько объетов, которые бы сохранялись в БД и тут же обновляли файл XML?

23 комментария
API 1.x,YMapsML
Использование геокодера
Brand-Create
5 августа 2010, 19:13

Плиззз, помогите, дайте хтмл код для реализации такого обращения к геокодеру http://geocode-maps.yandex.ru/1.x/?geocode=город
Москва, Тверская улица, дом 18, корпус 1&key=API-ключ

В результате нужно получить карту с меткой на этом адресе.

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

1 комментарий
API 1.x,геокодирование
Паровозики
erfen
6 августа 2010, 00:25

Здравствуйте. Пытаюсь понять, как сделаны "Паровозики". Пока не получается :(

Очень интересно, как рисуются линии по ж/д путям между станциями и как считается расстояние между ними. Не поделитесь секретом?

1 комментарий
API 1.x
несколько карт на одной странице
yoyoyda
6 августа 2010, 14:13

Пробую по аналогии с примером разместить на странице несколько карт

 

 <script type="text/javascript">
window.onload = function () {
    var mapContainer = document.getElementById("YaMapsID1"),
        map;
   
    document.getElementById("visibility-map").onclick = function () {
        mapContainer.style.display = (mapContainer.style.display == "") ? "none" : "";
       
        if (!map) {
            YMaps.load(function () {
                map = new YMaps.Map(mapContainer);   
                 map.setCenter(new YMaps.GeoPoint(), 16, YMaps.MapType.MAP);
        var placemark1 = new YMaps.Placemark(new YMaps.GeoPoint(), { style:             "default#lightbluePoint", balloonOptions: { maxWidth: 300} });                
        placemark1.name = "";
        placemark1.description = "";
        map.addOverlay(placemark1);

   var mapContainer2 = document.getElementById("YaMapsID2"),

        map;

    document.getElementById("visibility-map2").onclick = function () {
        mapContainer2.style.display = (mapContainer2.style.display == "") ? "none" : "";

        if (!map) {
            YMaps.load(function () {
                map = new YMaps.Map(mapContainer2);  
                 map.setCenter(new YMaps.GeoPoint(), 16, YMaps.MapType.MAP);

        var placemark1 = new YMaps.Placemark(new YMaps.GeoPoint(), {
style:             "default#lightbluePoint", balloonOptions: {
maxWidth: 300} });                

        placemark1.name = "";
        placemark1.description = "";
       map.addOverlay(placemark1);            });
        } else {
            map.redraw();
        }
       
        return false;
    };
}
</script>
<a id="visibility-map" onClick="showMap();return false;" href="#visibility-map">Карта 1</a>
<div class="YaMap" id="YaMapsID1" style="width: 500px; height: 400px; display: none;">&nbsp;</div>
<a id="visibility-map2" onClick="showMap();return false;" href="#visibility-map2">Карта 2</a>
<div class="YaMap" id="YaMapsID2" style="width: 500px; height: 400px; display: none;">&nbsp;</div>

 

С одной картой на странице - все раборает ( Спасибо клубу). в таком виде - нет.

2 комментария
API 1.x,несколько карт
Проблема с кликом внутри балуна
Сергей Миронов
6 августа 2010, 15:00

есть код

    YMaps.Events.observe(map, map.Events.Click, function (map, event) {
        event.preventMapEvent();
        polygon = new YMaps.Placemark(event.getGeoPoint());
        polygon.description = "Описание<textarea name='desc'></textarea><div onclick='map.removeOverlay(polygon)'>Удалить</div>";
        map.addOverlay(polygon);
        polygon.openBalloon();
    });

на карте, по клику ставится метка и сразу открывается... внутри textarea и div с обработкой на удаление оверлея

проблема в том, что по клику на "Удалить" у меня оверлей удаляеться, но обработчик map.Events.Click продолжает работать и после закрытия оверлея, на месте клика появляется новая метка и отрывается балун - все повторяется

как запретить map.Events.Click на все время время открытия балуна и опять разрешить если нажал на "Удалить" (или, например, нажал на закрытие балуна)

4 комментария
события