Здравствуйте, Совсем запарился, вдруг перестало все работать, точнее маркеры перестали отрисовываться, не верное определение региона. Как на локальном так и в продакшене. Думал может что-то допиливают, уже 3 день не работает, Полез проверил комиты, ничего нового не комитил. Подскажите что делать, не хочеться все переписывать.
Хорошие новости для всех, кто хочет интегрировать Яндекс.Карты в мобильное приложение.
Мы опубликовали iOS-фреймворк, позволяющий использовать JavaScript API версии 2.1 в вашем проекте с помощью CocoaPods.
Подключите фреймворк всего одной строчкой в Podfile, и вы уже можете добавить карту в своё приложение. Мы подготовили пример JS-кода карты, чтобы вы сразу могли увидеть результат.
Описание и подробные инcтрукции по установке вы найдете на GitHub.
Также данный фреймворк и модули, расширяющие функциональность JS API, описаны в нашей документации.
Команда разработчиков API Яндекс.Карт
На сайте почему то не добавляются метки, а тут https://jsfiddle.net/4Lh38h12/ все норм работает, что не так?
Доброго дня!
Искал решение, но не нашел. Сам ещё не могу решить задачку.
Имеем: https://tech.yandex.ru/maps/jsbox/2.1/deliveryCalculator
С двумя полями ввода, не есть удобно для нас. Как реализовать точку "А" по умолчанию и вывести только одно поле ввода?
Буду благодарен за помощь!
Переделал пример калькулятора доставки из песочницы.
https://jsfiddle.net/buhacker/nvypee9g/#&togetherjs=wR0PUu9vGe
Интересно услышать замечания знающих людей
Загружаю карту на страницу и изменяется шрифт, стоновиться менее жирным и менее читаемым, если в коносли удалить карту, то шрифт возвращается на нормальный, с чем это связано ?
Есть Список городов, по клику на город, карта центрируется, а как выделить границу города, как на самой карте яндекса реализованно. API 2.1.
mySearchControl = new ymaps.control.SearchControl({options:{noPlacemark:true, visible: true, float: 'top', size: 'small'}});таким способом создаю панель поиска, поскольку указал размер контрола small создастся стандартная кнопка по нажатию на которую будет показываться или скрываться сама панель поиска с полем для ввода.
Как можно изменить стиль этой маленькой кнопкой, или вообще ее обработчик повешать на другую кнопку?
Как одновременно сделать добалвение меток чз xml и определение местонахождения пользователя?
Получилось сделать таким образом:
ymaps.ready(init);
function init () {
// Создание экземпляра карты
var geolocation = ymaps.geolocation,
myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 14
}, {
searchControlProvider: 'yandex#search'
});
geolocation.get({
provider: 'yandex',
mapStateAutoApply: true
}).then(function (result) {
// Красным цветом пометим положение, вычисленное через ip.
result.geoObjects.options.set('preset', 'islands#redCircleIcon');
result.geoObjects.get(0).properties.set({
balloonContentBody: 'Мое местоположение'
});
myMap.geoObjects.add(result.geoObjects);
});
// Загрузка YMapsML-файла
ymaps.geoXml.load('/map1.xml?time="7"')
.then(function (res) {
// Добавление геообъектов на карту.
myMap.geoObjects.add(res.geoObjects);
// Вызывается в случае неудачной загрузки YMapsML-файла.
}, function (error){
alert('Ошибка: ' + error);
});
myMap.geoObjects.add(
new ymaps.Placemark(
[ymaps.geolocation.latitude, ymaps.geolocation.longitude],
{
balloonContentHeader: ymaps.geolocation.country,
balloonContent: ymaps.geolocation.city,
balloonContentFooter: ymaps.geolocation.region
}
)
);
}но это определение чз IP, а хотелось бы через Geolocation API
И второй вопрос: что такое ?time="7" в строке загрузки ymaps.geoXml.load ? без этого значения почему то новые объекты, доабленные в xml файл, не отображаются! отображаются только если менять это вручную, на любую произвольную цифру!
Здравствуйте.
Столкнулся с проблемой масштабирования карты. При загрузке страницы происходит масштабирование по коллекции и потом резкий скачёк на уменьшение масштаба до максимума.
function marks(){
if( window.myCollection ) window.myCollection.removeAll();
window.myCollection = new ymaps.GeoObjectCollection();
window.clusterer = new ymaps.Clusterer({
preset: 'islands#invertedVioletClusterIcons',
groupByCoordinates: false,
clusterDisableClickZoom: true,
});
getPointData = function (cityOne, id, volume, capacity, nds, distance, cityTwo) {
return {
balloonContentBody: [
'<address>' +
'<b>Загрузка:</b> ' + cityOne +
'<br/>' +
'<b>ID объявления:</b> ' + id +
'<br/>' +
'<b>Вес/Объём:</b> ' + volume + '/' + capacity +
'<br/>' +
'<b>' + nds + '</b> (' + (distance/nds) + ' р/км)' +
'<br/>' +
'<b>Разгрузка:</b> ' + cityTwo +
'<br/>' +
'<b>Расстояние:</b> ' + distance +
'</address>'
],
clusterCaption: '<strong class="list-item" id=' + id + '>' + cityOne + " => " + cityTwo + '</strong>',
identifier: id
};
}
$('.datacontent').each(function(){
var cityload = $(this).data('cityload'),
cityunload = $(this).data('cityunload'),
coordsload = $(this).data('coordsload').split(';'),
coordsunload = $(this).data('coordsunload').split(';'),
id = $(this).data('id'),
volume = $(this).data('volume'),
capacity = $(this).data('capacity'),
nds = $(this).data('nds'),
distance = $(this).data('distance');
var markTo = new ymaps.Placemark([coordsload[0], coordsload[1]], getPointData(cityload, id, volume, capacity, nds, distance, cityunload), {
preset: 'islands#greenDotIcon'
});
var markDo = new ymaps.Placemark([coordsunload[0], coordsunload[1]], getPointData(cityload, id, volume, capacity, nds, distance, cityunload), {
preset: 'islands#redDotIcon'
});
var lineCity = new ymaps.Polyline([
[coordsload[0], coordsload[1]],[coordsunload[0], coordsunload[1]]
],{
strokeColor: "0000FF55",
strokeWidth: 20,
identifier: id
});
clusterer.add(markTo).add(markDo);
myCollection.add(lineCity);
});
clusterer.events.add('click', clickOnPlacemark);
clusterer.events.add(['balloonopen'], function(){
$('.list-item').click(function(){
for( var i = 0; i < myCollection.getLength(); i++ ){
if(myCollection.get(i).properties.get('identifier') != this.id){
myCollection.get(i).options.set('visible', false);
}else{
myCollection.get(i).options.set('visible', true);
}
}
});
});
searchMap.geoObjects.add(clusterer);
searchMap.geoObjects.add(myCollection);
searchMap.setBounds(clusterer.getBounds(), { checkZoomRange: true });
}
Как сделать чтобы при нажатии на какой то обьект на карте, открывалась ссылка на той же странице и подсвечивался тот контейнер, который описывает этот обьект. Сейчас только наоборот при нажатии на описание - открывается обьект на карте.
Чтобы посмотреть как работает сейчас нужно:
1)Перейти по ссылке http://test.eltempo.ru/catalog/product/emr35_15761_black_brown/
2) Положить в корзину
3) Нажать на корзину и выбрать оформить заказ
4) Нажать на иконку Самовывоз (Стоимость: 0 )
До этого отлично все отображало, а с сегодняшнего дня пишет При загрузке YMapsML-файла произошла ошибка: [object Object]
Метка не хочет попадать в кластер, gridSize пробовал увеличивать, не помогает.
UPDATE:
https://jsfiddle.net/3pjmx3p2/2/
Добрый день всем.
Есть задача: При ховере на элемент списка магазинов подкрашивать метку на карте и также выводить название магазина в балуне. При этом одновременно могут быть покрашены несколько магазинов и показаны их балуны соответствено.
Для отображения нескольких балунов на карте отдновременно использую кастомные балуны:
var balloon = new ymaps.Balloon(this.map);
balloon.options.setParent(this.map.options);
balloon.options.set({
shadow: false,
layout: MyBalloonLayout,
contentLayout: MyBalloonContentLayout,
panelMaxMapArea: 0
});
balloon.setData({
content: object.name
});
balloon.open(element.geometry.coordinates);Вопрос: как удалять созданные кастомные балуны с карты? В документации не нашел как это можно сделать.
Сейчас удаляю балуны так $('selector').remove(). При следующем ховере создается новый балун.
Доброго времени суток!
Есть задача реализовать карту диллеров, со сменой оформления карты, выводом балуна при клике на регион. Нужно охватить Россию, Белорусию и Казахстан. Сам уже голову сломал. За основу взял пример регионов; остановился на смене цвета пассивной и активной области. В js - не очень, все опытным методом. Подключить RU, BY и KZ одновременно не смог. Гуру помогите, направте!
Не поулчается повесить событие на ссылку внутри кластера. При открытии балуна - вешается событие на ссылку, что видимая. При переключении в меню пунктов - событие не вешается.
var clickBalloonClose = function(){
for( var i = 0; i < myCollection.getLength(); i++ ){
myCollection.get(i).options.set('visible', true);
}
};
clusterer.events.add('click', clickOnPlacemark);
clusterer.events.add('balloonclose', clickBalloonClose);
function clickOnPlacemark(e){
var clickBalloon = function(){
if($('.list-item').is(':visible')){
$('.list-item').click(function(){
for( var i = 0; i < myCollection.getLength(); i++ ){
if(myCollection.get(i).properties.get('identifier') != this.id){
myCollection.get(i).options.set('visible', false);
}else{
myCollection.get(i).options.set('visible', true);
}
$('.open-more-card').click(function(){moreCardSearch.show();});
}
}).click();
}else{
for( var i = 0; i < myCollection.getLength(); i++ ){
if(myCollection.get(i).properties.get('identifier') != e.get('target').properties.get('identifier')){
myCollection.get(i).options.set('visible', false);
}else{
myCollection.get(i).options.set('visible', true);
}
}
}
$('.open-more-card').click(function(){moreCardSearch.show();});
clusterer.events.remove('balloonopen', clickBalloon);
};
clusterer.events.add('balloonopen', clickBalloon);
}
window.moreCardSearch = new rpDialog( "#moreCard", {
id: "card",
width: 750,
heigth: 500
});
Или событие какое есть, которое определяет открытие пункта в меню, что-то вроде - открытие Placemark'a на карте...
Пробовал так делать:
Placemark.events.add('click', function(){
$('.open-more-card').click(function(){moreCardSearch.show();});
});
clusterer.add(Placemark);
далее код...Но всё равно не работает.. Или что-то не то делаю.
Здравствуйте! Заранее прошу прощения.
Объясните, пожалуйста, чайнику! Почему в песочнице в примере clusterer_create.js стоят запятые вместо точек с запятой?
Например, после задания конструктора var myMap? После скобки, которая закрывает список параметров? И далее по тексту в аналогичных случаях?
Что это за прием такой? Где о нем прочитать? По какому слову его искать хотя бы?
Далее код из песочницы
ymaps.ready(function () {
var myMap = new ymaps.Map('map', {
center: [55.751574, 37.573856],
zoom: 9,
behaviors: ['default', 'scrollZoom']
}, {
searchControlProvider: 'yandex#search'
}),
/**
* Создадим кластеризатор, вызвав функцию-конструктор.
* Список всех опций доступен в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#constructor-summary
*/
clusterer = new ymaps.Clusterer({
/**
* Через кластеризатор можно указать только стили кластеров,
* стили для меток нужно назначать каждой метке отдельно.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage.xml
*/
preset: 'islands#invertedVioletClusterIcons',
/**
* Ставим true, если хотим кластеризовать только точки с одинаковыми координатами.
*/
groupByCoordinates: false,
/**
* Опции кластеров указываем в кластеризаторе с префиксом "cluster".
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml
*/
clusterDisableClickZoom: true,
clusterHideIconOnBalloonOpen: false,
geoObjectHideIconOnBalloonOpen: false
}),
/**
* Функция возвращает объект, содержащий данные метки.
* Поле данных clusterCaption будет отображено в списке геообъектов в балуне кластера.
* Поле balloonContentBody - источник данных для контента балуна.
* Оба поля поддерживают HTML-разметку.
* Список полей данных, которые используют стандартные макеты содержимого иконки метки
* и балуна геообъектов, можно посмотреть в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
*/
getPointData = function (index) {
return {
balloonContentBody: 'балун <strong>метки ' + index + '</strong>',
clusterCaption: 'метка <strong>' + index + '</strong>'
};
},
/**
* Функция возвращает объект, содержащий опции метки.
* Все опции, которые поддерживают геообъекты, можно посмотреть в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
*/
getPointOptions = function () {
return {
preset: 'islands#violetIcon'
};
},
points = [
[55.831903,37.411961], [55.763338,37.565466], [55.763338,37.565466], [55.744522,37.616378], [55.780898,37.642889], [55.793559,37.435983], [55.800584,37.675638], [55.716733,37.589988], [55.775724,37.560840], [55.822144,37.433781], [55.874170,37.669838], [55.716770,37.482338], [55.780850,37.750210], [55.810906,37.654142], [55.865386,37.713329], [55.847121,37.525797], [55.778655,37.710743], [55.623415,37.717934], [55.863193,37.737000], [55.866770,37.760113], [55.698261,37.730838], [55.633800,37.564769], [55.639996,37.539400], [55.690230,37.405853], [55.775970,37.512900], [55.775777,37.442180], [55.811814,37.440448], [55.751841,37.404853], [55.627303,37.728976], [55.816515,37.597163], [55.664352,37.689397], [55.679195,37.600961], [55.673873,37.658425], [55.681006,37.605126], [55.876327,37.431744], [55.843363,37.778445], [55.875445,37.549348], [55.662903,37.702087], [55.746099,37.434113], [55.838660,37.712326], [55.774838,37.415725], [55.871539,37.630223], [55.657037,37.571271], [55.691046,37.711026], [55.803972,37.659610], [55.616448,37.452759], [55.781329,37.442781], [55.844708,37.748870], [55.723123,37.406067], [55.858585,37.484980]
],
geoObjects = [];
/**
* Данные передаются вторым параметром в конструктор метки, опции - третьим.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark.xml#constructor-summary
*/
for(var i = 0, len = points.length; i < len; i++) {
geoObjects[i] = new ymaps.Placemark(points[i], getPointData(i), getPointOptions());
}
/**
* Можно менять опции кластеризатора после создания.
*/
clusterer.options.set({
gridSize: 80,
clusterDisableClickZoom: true
});
/**
* В кластеризатор можно добавить javascript-массив меток (не геоколлекцию) или одну метку.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#add
*/
clusterer.add(geoObjects);
myMap.geoObjects.add(clusterer);
/**
* Спозиционируем карту так, чтобы на ней были видны все объекты.
*/
myMap.setBounds(clusterer.getBounds(), {
checkZoomRange: true
});
});Не могу понять, почему нет Москвы, другие регионы есть?
ymaps.ready(function () {
map = new ymaps.Map('reviewsmap', {
zoom: 6,
center: [37.6214,55.7847],
controls: ["fullscreenControl"]
},{}
);
var zoomControl = new ymaps.control.ZoomControl({
options: {
position: {right: 10,top: 230}
}
});
map.controls.add(zoomControl);
map.behaviors.disable(['scrollZoom']);
//Загружаем области
jQuery.getJSON("file/region.json", function(data)
{
var url = "http://nominatim.openstreetmap.org/search";
jQuery.each(data, function(index, value) {
var tmp = value.split("|");
var zInd = tmp[0];
var regionname = tmp[1];
$.getJSON(url, {q: regionname, format: "json", polygon_geojson: 1, limit:2 })
.then(function (data) {
$.each(data, function(ix, place) {
if ("administrative" == place.type) {
var obl = new ymaps.Polygon(place.geojson.coordinates);
obl.options.set('fillColor', 'rgba(255, 0, 0, 0.4)');
obl.options.set('strokeColor', '#F8DA19');
obl.options.set('zIndex', zInd);
obl.properties.set('hintContent', regionname+"111");
obl.events.add('mouseenter', function () {obl.options.set('fillColor', 'rgba(255, 0, 0, 0.6)');});
obl.events.add('mouseleave', function () {obl.options.set('fillColor', 'rgba(255, 0, 0, 0.4)');});
map.geoObjects.add(obl);
}
});
}, function (err) {console.log(err);});
});
});
});json файл
[ "1000|Москва", "1000|Московская область", "1000|Ярославская область", "2000|Конаковский район", "1000|Саратовская область" ]
Добрый день! Использую yandex suggest, подключил скрипт https://api-maps.yandex.ru/2.1/?lang=ru_RU . При отправке запроса
https://suggest-maps.yandex.ru/suggest-geo?callback=id_14707305338075696725&v=5&search_type=tp&part=Кирова&lang=ru_RU&n=5&origin=jsapi2Geocoder&bbox=-180%2C-90%2C180%2C90
он посылается с версией 5 (v=5 параметр) и в ответе с каждым городом приходит {"hl":[[n,m]]},
id_14707305338075696725(["Кирова",[["geo","проспект Кирова, Самара, Россия","Россия, Самара, проспект Кирова ",{"hl":[[9,15]]}],["geo","улица Кирова, Люберцы, Московская область, Россия","Россия, Московская область, Люберцы, улица Кирова ",{"hl":[[6,12]]}],["geo","улица Кирова, Подольск, Московская область, Россия","Россия, Московская область, Подольск, улица Кирова ",{"hl":[[6,12]]}],["geo","улица Кирова, село Макарье, Киров, Россия","Россия, Киров, село Макарье, улица Кирова ",{"hl":[[6,12]]}],["geo","улица Кирова, Минск, Беларусь","Беларусь, Минск, улица Кирова ",{"hl":[[6,12]]}]],{"pers_options":0}])а мне нужны координаты, как на версии 7.
id_14707305338075696725({"part":"Кирова","results":[{"name":"проспект Кирова","type":"geo","desc":"Самара, Россия","lat":53.223949,"lon":50.256864},{"name":"улица Кирова","type":"geo","desc":"Люберцы, Московская область, Россия","lat":55.679756,"lon":37.883981},{"name":"улица Кирова","type":"geo","desc":"Подольск, Московская область, Россия","lat":55.423205,"lon":37.52001},{"name":"улица Кирова","type":"geo","desc":"село Макарье, Киров, Россия","lat":58.613051,"lon":49.741904},{"name":"улица Кирова","type":"geo","desc":"Минск, Беларусь","lat":53.897306,"lon":27.560054}],"pers_options":0})Подскажите пожалуйста, можно ли изменить версию запроса? Или что нужно делать чтобы координаты получить?
Всех приветствую. Хочется для каждой точки свою пользователькую иконку. Максимум чего я добился, это смена иконки для всех точек. А хочется разные.
function reloadYandexMap(responseCoords)
{
myMap.geoObjects.removeAll();
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 32
});
objectManager.objects.options.set({
iconLayout: 'default#image',
iconImageHref: '/images/def.png',
iconImageSize: [48, 48],
iconImageOffset: [-24, -48]
});
myMap.geoObjects.add(objectManager);
objectManager.add(responseCoords);
}
Союственно в responseCoords заходит массив с точками:
{
type: 'FeatureCollection',
features: [{
type: 'Feature',
id: currentId++,
geometry: {
type: 'Point',
coordinates: [24.34, 65.24]
}
}, {
type: 'Feature',
id: currentId++,
geometry: {
type: 'Point',
coordinates: [25.34, 63.24]
}
}
]
}В features можно добавить options, но оно ни на что не реагирует ;(