Здравствуйте, Совсем запарился, вдруг перестало все работать, точнее маркеры перестали отрисовываться, не верное определение региона. Как на локальном так и в продакшене. Думал может что-то допиливают, уже 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, но оно ни на что не реагирует ;(