Клуб API Карт

декабрь 2012
На карте не отображается масштабная линейка.
soulfly84
3 декабря 2012, 09:43

Добрый день!
Помогите пожалуйста,  - создала интерактивную карту для сайта http://fotoalen.ru/shop/about/shops/ вставила ее на сайт, а там не отображается масштабная линейка, карту нельзя ни увеличить, ни измерить на ней расстояние, ее можно только двигать. Не могу понячть, в чем проблема?!

3 комментария
API 2.0,поведения карты,контролы
Параметры в url строке
reaper5551
3 декабря 2012, 15:52

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

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

http://maps.yandex.ru/?ll=37.584731,55.690693&spn=2.124481,0.671008&z=10&l=map&pt=37.584731,55.690693,pmrdm1

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

Где можно почитать подробнее про расстановку меток таким хитрым способом? 

Частично подходит материал из документации про метки для Static API 1.x, но на maps.yandex.ru ведь используется что-то другое.

P.S. Я сразу не сказал, что нужно не на свою карту ссылку генерировать, а на http://maps.yandex.ru , то есть мне нужно именно URL, и чтобы именно в нем задавались метки. Грубо говоря, получаю ссылку, скидываю её в аську, её открывают, и видят отметки на городах. 

7 комментариев
Static API,API 2.0,maps.yandex.ru
Не получается определить корректные координаты для здания, не пронумерованого Яндекс картой....
mir46ru
3 декабря 2012, 15:55

Здравствуйте! Посоветуйте пожалуйста, как быть в таком случае:

Есть здание, отмеченно на карте яндекса. Оно не является пронумерованным, соответственно координаты для него я получаю вручную, используя сервис: http://api.yandex.ru/maps/tools/getlonglat/

На первом скрине видно, как я устанавливаю центр карты на интересующем меня строении: 

Как видно, координатами центра карты являются: 51.766739, 36.130441

 

НО, когда я по этим координатам на своём сайте генерирую карту, получается вот такая штука: 

Метка "промахивается" мимо здания. Это меня печалит, т.к. случай не единичный, куча адресов по Курску определяется подобным образом.

 

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

Заранее благодярю за помощь!

С уважением,

Дмитрий

Нет комментариев
Не работает hint (data.title) в control.Button
KDV
3 декабря 2012, 15:57

Сделал 1 в 1 по мануалу http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/control.Button.xml
Использовал пример 1. Хинт не пашет ни в Опере ни в ФФ.
На стандартных кнопках тулбара к слову тоже.
Однако для Placemark hintContent работает.

2 комментария
кнопка,элементы управления,API 2.0,контролы
Отмечать клиентов на яндекс.карте по адресу
p5298
3 декабря 2012, 17:12

Здравствуйте! Подскажите, пожалуйста, есть ли возможность автоматически отмечать на одной яндекс.карте(на одной странице) несколько точек из списка адресов.

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

Организация№1    199178, Санкт-Петербург г, Реки Смоленки наб, дом № 19, корпус 21 лит Д

Организация№2    652614, Кемеровская обл, Белово г, Грамотеино пгт, Лесная ул, дом № 1

Организация№3 и т.д.

Сейчас самое подходящее решение, это создание Моей карты, поиск по адресу, на найденной точке нажать Сохранить и дать ей имя Организация№1, но когда клиентов около 100, то ручной вариант очень трудоёмкий.

 Пример карты 

Может есть какой-нибудь синтаксис (выполняющий условие "И"), который можно использовать в поисковой строке яндекс.карт, чтобы указывать несколько адресов подряд?

3 комментария
Где-то косяк в прогнозах.
Глазырев Константин
3 декабря 2012, 19:54

6 комментариев
надо прикрутить ID к баллунам, точки из KML
Dariloff
3 декабря 2012, 20:30

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

3й день только как с API познакомился. Нужна функция сохранения параметров карты в URL, как в примере

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

только у меня импорт ил KML, и myID к баллунам не знаю как прикрутить.

Есть идея прикрутить к ID координаты. Но не выходит ничего. Весь вечер сижу, ничего не получается.

KML сначала идёт в коллекцию res.geoObjects, потом её в массив пихаю, а массив в кластеры

        ymaps.geoXml.load("https://maps.google.com/maps/....")
            .then(function (res) {

                // Установка границ карты по размерам содержимого YMapsML-файла.
                var bounds = res.mapState && res.mapState.getBounds();

                bounds && map.setBounds(bounds);

                res.geoObjects.each(function (geoObject) {
            geoObject.options.set({
                        iconImageSize: [23, 25],
                        iconImageOffset: [-10, -20],
                    });
                });

var placemarks = [];
res.geoObjects.each(function (object) {placemarks.push(object)});

clusterer.add(placemarks);

Нет комментариев
Можно ли получить список latlong для улицы?
s.ivantchov
3 декабря 2012, 23:48

1) Можно ли в сервисе геокодирования получить список координат latlong

для улицы в городе.?Сейчас в ответе приходит только центральная точка.По ней невозможно определить направления улицы.

2) Есть ли способ отрисовки улицы используя координаты от сервиса геокодирования?

Нет комментариев
геокодирование
Различные ошибки route
Глазырев Константин
4 декабря 2012, 00:13

Чем  больше встраиваю API в сайт, тем больше понимаю что нельзя полностью полагаться на API.

Выявил две проблемы и все с построением маршрута.

1) При указании улицы Бирюлёвская, маршрут строится до станции "Орехово", хотя удобнее и ближе добираться до "Царицыно". Карты не учитывают переезд под Повелецкой линией.

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

Пользователь добавляет объект(к API не относится) и обращается к карте, нанося точку, на карту, определяя ближайшее метро, но маршрут строить не хочет как и определить растояние до метро.

Например, "Молодогвардейская улица, 18к2" до метро "Кунцевская", метро находит, маршрут не строит. Видимо по тому, что объект не находится рядом с дорогой.   

 

Может я не так что-то делаю:

 

Скинул свой кривой код

 

var myMap, routeLength, firtstPathTime, firstPathFirstSegmentJamsTime, name_metro;

// ymaps.ready(inits);
ymaps.ready(init);
function init() {
yandex_set_map('Россия, ' + $('#adress_name').val(), 9);
}

/* Строительство карты */
function yandex_set_map(city, zoom_maps, metro) {
// myMap.panTo(
var newmaps = new ymaps.geocode(city);

newmaps.then(function(res) {
// определяем координаты
var myCoords = res.geoObjects.get(0).geometry.getCoordinates();

// Добавляем координаты в шаблон

$('#yandex_point').val(myCoords);

// создаём карту
myMap = new ymaps.Map("map_add", {
center : myCoords,
zoom : zoom_maps
});

// if(metro == true){
// messeng(myCoords);
// http://api.yandex.ru/maps/doc/geocoder/desc/reference/kind.xml
var myGeocoder_metro = ymaps.geocode(myCoords, {
kind : 'metro',
results : 1
});
// }
var myGeocoder_home = ymaps.geocode(myCoords, {
kind : 'house',
results : 1
});

myGeocoder_home.then(function(res_house) {
var nearest_house = res_house.geoObjects.get(0);

// var name = nearest.properties.get('name');
nearest_house.properties.set('iconContent', 'Ближайшее метро');
nearest_house.options.set('preset', 'twirl#redStretchyIcon');
myMap.geoObjects.add(res.geoObjects);
}, function(err) {
// alert('Ошибка');
});
// if(metro == true){
myGeocoder_metro.then(function(res) {
var nearest = res.geoObjects.get(0);

var name_metro = nearest.properties.get('name');
nearest.properties.set('iconContent', name_metro);
nearest.options.set('preset', 'twirl#redStretchyIcon');
myMap.geoObjects.add(res.geoObjects);

$('#metro_yandex_name').val(name_metro);
/* Название метро */

/* messeng(name_metro); */
ymaps.route([city, name_metro]).then(function(route) {

messeng(name_metro);

// маршрут
myMap.geoObjects.add(route);
routeLength = route.getLength();
/* длину маршрута в метрах. */
firtstPathTime = route.getTime();
/* Возвращает время проезда маршрута в секундах. */
firstPathFirstSegmentJamsTime = route.getJamsTime();
/* Возвращает время проезда маршрута в секундах с учетом пробок. */

// $('#metro_yandex_name').val(name_metro);/* Название метро */
$('#metro_yandex_distance').val(routeLength);
$('#metro_yandex_routegettime').val(firtstPathTime);
$('#metro_yandex_routegettimejams').val(firstPathFirstSegmentJamsTime);

// messeng(routeLength +'Длина');
// messeng(firtstPathTime +'Время без учета пробок ');
// messeng(firstPathFirstSegmentJamsTime +'Время с пробками ');
/* Возвращает время проезда маршрута в секундах. */
// 934.59Время с пробками
}, function(error) {
// alert('Возникла ошибка: ' + error.message);
});
}, function(err) {
// alert('Ошибка');
});
// }
myMap.controls.add('zoomControl', {
top : 5,
left : 5
});

/*
Baloon = new ymaps.Placemark(myCoords,
{// Опции
preset : 'twirl#redStretchyIcon' ,
iconContent : 'Ближайшее метро'
});
// Добавляем метку на карту

myMap.geoObjects.add(Baloon);
*/

});
}

function yandex_reload_map(city, zoom_maps, metro) {

/* удаляем карту */
myMap.destroy();
/* обнуляем метро */
routeLength = 0, name_metro = 0, firtstPathTime = 0, firstPathFirstSegmentJamsTime = 0;
yandex_set_map(city, zoom_maps, metro)
}

 

Нет комментариев
маршрутизация
hotspot.Layer
an-d-r-ej
4 декабря 2012, 00:42

Есть возможность создаль слой hotspot.Layer

без привязки его к запросам на сервер?

и каким то образом добавлять в него объекты (hotspot), удалять  и описывать реакцию на события.

Я, конечно нашел в описаниях и hotspot.Layer и hotspot.Shape...

Но никак не могу понять эти конструкторы. И их работу. Что к чему добавлять и где что указывать.

 

Например, чем отличаются Реальная геометрия объекта и Пиксельные координаты фигуры...

23 комментария
Почитал я фак, полазил в гугле - но так и не нашел и потому пишу)
dekakisa2000
4 декабря 2012, 07:56

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

http://www.vpodarok.ru/vpodarokKart

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

9 комментариев
кластеризатор,API 2.0
Подсчитать длину ломанной
Terentiev Alexander
4 декабря 2012, 09:19

Мне нужно прокладывать маршрут пешехода. Поэтому маршрутизатор не подходит. Вот хочу прокладывать маршрут с помощью ломанной.

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

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

4 комментария
API 2.0,ломаная
про renderAt
an-d-r-ej
4 декабря 2012, 13:13

Я примерно так понял, что до 16 версии API при создании слоя - создавался слой, расширяющий layer.tile.DomTile.

Посале, API - в зависимости от браузера - стала создавать и  layer.tile.CanvasTile.

 

Можно ли при создании слоя - как то указать, какого рода слой необходимо создать?

4 комментария
Координаты городов: центр и граница
VasilyREAL
4 декабря 2012, 14:10

Никак не могу найти откуда берутся координаты типа:

protected static function getGeoDataRnd()

    {

        return array(

            'center'            =>  array(47.252011306832856, 39.68086300000003),

            'defaultZoomLevel'  =>  10,

            'border'            =>  array(

                array(47.16857660120787, 39.58351150532767),

                array(47.14422117185624, 39.62196365376516),

                array(47.16670350542872, 39.73182693501516),

                array(47.162020475204464, 39.782638702593275),

                array(47.191984690791905, 39.843063507280775),

                array(47.21818942325523, 39.8279573061089),

                array(47.25560216185996, 39.91447464009329),

                array(47.290185282532455, 39.93232742329641),

                array(47.307935346077755, 39.892501983843275),

                array(47.28084073551131, 39.8609162904839),

                array(47.28364427401736, 39.82521072407766),

                array(47.34155060355312, 39.80873123189016),

                array(47.377942845705086, 39.72084060689015),

                array(47.3247456652018, 39.735946808062025),

                array(47.36301575045923, 39.70024124165578),

                array(47.36394881844895, 39.66453567524954),

                array(47.306067200682335, 39.665908966265164),

                array(47.28364427401736, 39.5972444154839),

                array(47.25840704580169, 39.60823074360891),

                array(47.262146658504676, 39.53819290181204),

                array(47.21163946124125, 39.455795440874525),

                array(47.24625146899379, 39.40086380024954),

                array(47.22941603568594, 39.3775178529839),

                array(47.173259049882766, 39.44068923970265),

                array(47.15921045767849, 39.539566192827664)

            ),

            'airports'          =>  array(

                'rov'       =>  t('Аэропорт Ростов-на-Дону')

            ),

            'airportAliases'    =>  array(

                'ростов-на-дону'    =>  'rov'

            ),

            'railwayStations'   =>  array(

                'pass'          =>  t('Станция Ростов-Главный')

            ),

            'railwayStationAliases' =>  array(

                'ростов-главный'    =>  'pass'

            )

        );     

    }

 На сайте размещено уже несколько - а как добавит, скажем, Уфу - не смог найти.

3 комментария
Содержимое Балуна
vur-chh
4 декабря 2012, 15:20

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

При поиске дома балун имеет следующий вид. Подскажите пожалуйста как убрать из содержимого балуна наименование района и оставить остальное.

Спасибо.

Совсем никто не знает? 

Или это нельзя сделать?

Нет комментариев
API 1.x,балун
Исправляем проблему autoPan c кастомным баллуном
nolan23
4 декабря 2012, 15:39

Эта проблема несколько раз уже поднималась в клубе API Яндекс Карт.
 

 

 

Оригинал статьи - тут с подсветкой кода


При открытии баллуна неправильно работает смещение карты и часть баллуна зарезается

Одним из решений было "прибивать" баллун к низу карты. Этот метод я реализовал в проекте
http://pomnivoinu.ru/map (желкните на объект, затем - "Подробнее"). В этом проекте - баллун довольно большой и содержит много контента с вкладками, и юзер (по замыслу) должен задержаться на этом баллуне. Поэтому "прибивать" его к низу карты было оправдано.

Баллун прибит к низу карты

 

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

 

balloonLayout = ymaps.templateLayoutFactory.createClass(
// шаблон баллуна у нас лежит в тэге <script type="text/html">
                $('#balloonContentTemplate').html(), {
                build: function() {
// исполняем конструктор суперкласса
                    balloonLayout.superclass.build.call(this);
// получает геообъект
                    var geoObject = this.getData().geoObject,
// карту
                        map = geoObject.getMap(),
// координаты геообъекта
                        coords = geoObject.geometry.getCoordinates(),
// контейнер баллуна
                        container =  $(this.getParentElement());
// смещаем контейнер баллуна относительно его привязки, чтобы получилось, что баллун находится по центру над геообъектом
                    container.find('.partner-balloon').each( function() {
                            $(this).css( {
                                left: -Math.round($(this).outerWidth() / 2),
                                top: -$(this).outerHeight()
                            });
                            var zoom = map.getZoom(),
                                width = $(this).outerWidth(),
                                height = $(this).outerHeight(),
                                projection = map.options.get('projection'),
// переводим геокоординаты геообъекта в пиксельные
                                global = projection.toGlobalPixels(coords, zoom),
// получаем пиксельные координаты центра карты
                                center = map.getGlobalPixelCenter(),
// получаем прямоугольник баллуна в пиксельных координатах
// прямоугольник смещаем над точкой посередине
                                balloonGlobalBounds = [ [ global[0] - Math.round(width / 2), global[1] + 0],
                                    [ global[0] + Math.round(width / 2), global[1] - height - 17]],
                                bounds = map.getBounds(),
// получаем вьюпорт карты в пиксельных координатах
                                globalBounds = [ projection.toGlobalPixels(bounds[0], zoom),
                                    projection.toGlobalPixels(bounds[1], zoom)],
// инициализируем смещение
                                pan = [ 0, 0];
// проверяем, находится ли прямоугольник баллуна внутри прямоугольника вьюпорта
// если нет, то смещаем его и прибавляем 20 пикселей для красоты
                            if ( balloonGlobalBounds[0][0] < globalBounds[0][0] ) {
                                pan[0] = balloonGlobalBounds[0][0] - globalBounds[0][0] - 20
                            } else if ( balloonGlobalBounds[1][0] > globalBounds[1][0]) {
                                pan[0] = balloonGlobalBounds[1][0] - globalBounds[1][0] + 20
                            }
                            if ( balloonGlobalBounds[0][1] > globalBounds[0][1] ) {
                                pan[1] = balloonGlobalBounds[0][1] - globalBounds[0][1] + 20
                            } else if ( balloonGlobalBounds[1][1] < globalBounds[1][1]) {
                                pan[1] = balloonGlobalBounds[1][1] - globalBounds[1][1] - 20
                            }
                            if (pan[0] || pan[1]) {
                                center[0] += pan[0];
                                center[1] += pan[1];
// вызываем panTo
                                map.panTo(projection.fromGlobalPixels(center, zoom), { delay: 0, duration: 500});
                            }

                        }).
                        on('click', '.ymaps-b-balloon__close', function() {
                              map.balloon.close();
                        });
                },
                clear: function() {
                    $('.partner-balloon').off();
                    balloonLayout.superclass.clear.call(this);
                }
            })


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




 

Нет комментариев
Координаты вершин ломанной - массив
Terentiev Alexander
4 декабря 2012, 15:45

 

var myPolyline = new ymaps.Polyline([

// Указываем координаты вершин ломаной.

[55.11,33.11],[55.12,33.11],[55.13,33.11]

]

Чтобы всместо [55.11,33.11],[55.12,33.11],[55.13,33.11] был массив, который меняется динамически, без перезагрузки страницы.


Вобщем задача такая:

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

7 комментариев
координаты,ломаная
2.0 переключен на 2.0.20
tekunova
4 декабря 2012, 15:48
2.0 переключен на 2.0.20

Мы переключили ссылку api-maps.yandex.ru/2.0 на версию API 2.0.20. Если вы хотите продолжить использование предыдущей версии, указывайте api-maps.yandex.ru/2.0.18.

Рекомендуем прочитать статью о системе версионирования и использовать наиболее подходящую для ваших задач ссылку для подключения API.

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

Нет комментариев
обновление,API 2.0
Ошибка в АПИ. DataManager. Функция set
Евгений Белоусов
4 декабря 2012, 16:11

В эту функцию может передастья 2 параметра, первый из которых объект вида {имя:значение}, а второй может быть undefined.

В этой функции происходит проверка на кол-во переданных аргументов, но не на их значение

7 комментариев
Создание своей карты
kolka-the-hackfaq
4 декабря 2012, 18:27

Добрый день!

Подскажите, где можно почитать про создание карты, как на примере http://api.yandex.ru/maps/doc/jsapi/2.x/examples/ship-map.html

2 комментария
карта,API 2.0