Добрый день!
Помогите пожалуйста, - создала интерактивную карту для сайта http://fotoalen.ru/shop/about/shops/ вставила ее на сайт, а там не отображается масштабная линейка, карту нельзя ни увеличить, ни измерить на ней расстояние, ее можно только двигать. Не могу понячть, в чем проблема?!
Здравствуйте!
Недавно обнаружил, что можно задавать параметры для онлайн карты непосредственно в адресной строке браузера, например:
откроет яндекс карты, и поставит точку на определенных координатах.
Где можно почитать подробнее про расстановку меток таким хитрым способом?
Частично подходит материал из документации про метки для Static API 1.x, но на maps.yandex.ru ведь используется что-то другое.
P.S. Я сразу не сказал, что нужно не на свою карту ссылку генерировать, а на http://maps.yandex.ru , то есть мне нужно именно URL, и чтобы именно в нем задавались метки. Грубо говоря, получаю ссылку, скидываю её в аську, её открывают, и видят отметки на городах.
Здравствуйте! Посоветуйте пожалуйста, как быть в таком случае:
Есть здание, отмеченно на карте яндекса. Оно не является пронумерованным, соответственно координаты для него я получаю вручную, используя сервис: http://api.yandex.ru/maps/tools/getlonglat/
На первом скрине видно, как я устанавливаю центр карты на интересующем меня строении:
Как видно, координатами центра карты являются: 51.766739, 36.130441
НО, когда я по этим координатам на своём сайте генерирую карту, получается вот такая штука:
Метка "промахивается" мимо здания. Это меня печалит, т.к. случай не единичный, куча адресов по Курску определяется подобным образом.
Не подскажете, как получить корректные координаты, которые укажут туда, куда следовало бы, а не рядом???
Заранее благодярю за помощь!
С уважением,
Дмитрий
Сделал 1 в 1 по мануалу http://api.yandex.ru/maps
Использовал пример 1. Хинт не пашет ни в Опере ни в ФФ.
На стандартных кнопках тулбара к слову тоже.
Однако для Placemark hintContent работает.
Здравствуйте! Подскажите, пожалуйста, есть ли возможность автоматически отмечать на одной яндекс.карте(на одной странице) несколько точек из списка адресов.
Например, у меня есть список адресов в виде текстовых строк (выгруженный из базы моих клиентов):
Организация№1 199178, Санкт-Петербург г, Реки Смоленки наб, дом № 19, корпус 21 лит Д
Организация№2 652614, Кемеровская обл, Белово г, Грамотеино пгт, Лесная ул, дом № 1
Организация№3 и т.д.
Сейчас самое подходящее решение, это создание Моей карты, поиск по адресу, на найденной точке нажать Сохранить и дать ей имя Организация№1, но когда клиентов около 100, то ручной вариант очень трудоёмкий.
Может есть какой-нибудь синтаксис (выполняющий условие "И"), который можно использовать в поисковой строке яндекс.карт, чтобы указывать несколько адресов подряд?
Приветствую!
3й день только как с API познакомился. Нужна функция сохранения параметров карты в URL, как в примере
http://api.yandex.ru/maps
только у меня импорт ил 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);
1) Можно ли в сервисе геокодирования получить список координат latlong
для улицы в городе.?Сейчас в ответе приходит только центральная точка.По ней невозможно определить направления улицы.
2) Есть ли способ отрисовки улицы используя координаты от сервиса геокодирования?
Чем больше встраиваю 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
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_routeget
$('#metro_yandex_routeget
// 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
без привязки его к запросам на сервер?
и каким то образом добавлять в него объекты (hotspot), удалять и описывать реакцию на события.
Я, конечно нашел в описаниях и hotspot.Layer и hotspot.Shape...
Но никак не могу понять эти конструкторы. И их работу. Что к чему добавлять и где что указывать.
Например, чем отличаются Реальная геометрия объекта и Пиксельные координаты фигуры...
Здравствуйте - вот пользуюсь яндекс картами - и на проекте вознакла нужда в огромной кол-ве меток.
http://www.vpodarok.ru/vpodarokKart
Как видите сами - тормозит ппц просто. Кога все метки подгружались сразу без этого типа подгружающего цикла страница вообще грузилась по 1 мин(( Не хочется быть очередным быдлокодером - прошу совета - что почитать по этой теме, или хотябы просто направление, в котором копать, уже неделю мучаюсь с оптимизацией
Мне нужно прокладывать маршрут пешехода. Поэтому маршрутизатор не подходит. Вот хочу прокладывать маршрут с помощью ломанной.
Как мне подсчитывать расстояние, т.е. длину этой ломанной? Подскажите идею.
Пробывал пользоваться линейкой, в общем в вершины ломанной ставить, но тогда она у меня отображается по верх вершин ломанной и мешает редактировать ломанную. Это не тот вариант, который мне нужен.
Я примерно так понял, что до 16 версии API при создании слоя - создавался слой, расширяющий layer.tile.DomTile.
Посале, API - в зависимости от браузера - стала создавать и layer.tile.CanvasTile.
Можно ли при создании слоя - как то указать, какого рода слой необходимо создать?
Никак не могу найти откуда берутся координаты типа:
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'
)
);
}
На сайте размещено уже несколько - а как добавит, скажем, Уфу - не смог найти.
Здравствуйте.
При поиске дома балун имеет следующий вид. Подскажите пожалуйста как убрать из содержимого балуна наименование района и оставить остальное.
Спасибо.
Совсем никто не знает?
Или это нельзя сделать?
Эта проблема несколько раз уже поднималась в клубе 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);
}
})
в результате получаем правльное расположение баллуна
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] был массив, который меняется динамически, без перезагрузки страницы.
Вобщем задача такая:
путем кликов по карте построить ломанную, но одну цельную, не из нескольких ломанных.
Мы переключили ссылку api-maps.yandex.ru/2.0 на версию API 2.0.20. Если вы хотите продолжить использование предыдущей версии, указывайте api-maps.yandex.ru/2.0.18.
Рекомендуем прочитать статью о системе версионирования и использовать наиболее подходящую для ваших задач ссылку для подключения API.
Команда разработчиков API Яндекс.Карт.
В эту функцию может передастья 2 параметра, первый из которых объект вида {имя:значение}, а второй может быть undefined.
В этой функции происходит проверка на кол-во переданных аргументов, но не на их значение
Добрый день!
Подскажите, где можно почитать про создание карты, как на примере http://api.yandex.ru/maps