Клуб API Карт

Найдено на тему «Яндекс.карты API»:
Миграция с objectManager -> loadingManager
Artem Bukhtoiarov
26 мая 2017, 18:30

Мы до какого-то времени использовали objectManager для карт.

Но количество меток растет и загрузка карты начинает тупить. Вообщем решили использовать loadingManager.

У нас в базе хранятся координаты типа широта и долгота (lat, long). 

Для loadingManager решили использовать загрузку со splitRequests = false с tileBounds

Номера тайлов получаю так

zoom = window.nedroMap.getZoom();
coords = go.geometry.coordinates;
globalPixelCoordinates = window.nedroMap.options.get('projection').toGlobalPixels(coords, zoom);
      tileNumber = [Math.floor(globalPixelCoordinates[0] / 256), Math.floor(globalPixelCoordinates[1] / 256)];

Дальше мне нужно tileNumber для каждого гео-объекта записать в базу. Но zoom ведь тоже нужно как-то корректно получить. Как вот для каждого объекта определить подходящйи зум ? 

Или может есть хорошие практики и я вообще все неверно делаю. Нужна вообщем помощь.

Спасибо.

3 комментария
Яндекс.карты API
Задание координат для собственной карты по разрешению исходного изображения
Dimoks
9 мая 2017, 01:49

Создал из исходного изображения разрешением 15000×10000 тайлы для масштабов с 3 до 6, и из них сделал собственную карту по примеру.

Моей целью было разместить начало координат в центре исходного изображения, правому верхнему углу его задать координаты (y, x): (5000, 7500), нижнему левому координаты (-5000, -7500). Протяжённость координат равна сторонам исходного изображения.

С помощью подсказки поддержки про использование размера мира на максимальном масштабе получилось задуманное через декартову систему координат:

/* до функции создания карты поместил вычисление размера мира для максимального масштаба*/

var MAX_ZOOM = 6;

var worldSize = Math.pow(2, MAX_ZOOM) * 256;

/* в функции же создания карты разместил проекцию так:*/

projection: new ymaps.projection.Cartesian([[5000-worldSize, -7500], [5000, worldSize-7500]], [false, false]))

Т. е. для координаты (y) нижнего левого угла исходного изображения из отрицательной желаемой координаты вычел размер мира, а для координаты (x) верхнего правого угла из размера мира вычел желаемую для него.

Для размещения начала координат в левом верхнем углу исходного изображения и совпадения мировых координат с пиксельными задание проекции будет таким:

projection: new ymaps.projection.Cartesian([[worldSize, 0], [0, worldSize]], [false, false])

А если есть желание сделать отрицательное значение (y) для нижнего края, то так:

projection: new ymaps.projection.Cartesian([[-worldSize, 0], [0, worldSize]], [false, false])

Собственно для совпадения мировых координат с размерами исходного изображения требуется лишь указание размера мира для максимального масштаба в качестве одной из координат: для нижней левой — y, для верхней правой — x. Оказывается довольно просто.

3 комментария
Яндекс.карты API,Декартова система координат
Исключить полигон или какие-то отдельно взятые дороги в маршруте
Павел
31 марта 2017, 15:28

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

2 комментария
Яндекс.карты API
Разыскивается web-программист со знанием API Яндекс карт
Удалённый пользователь
5 декабря 2016, 15:36

Разыскивается web-программист со знанием API Яндекс карт.
Требуется создать сайт: база данных, админка, функционал. Дизайн не нужен.
Подробнее при общении.

1 комментарий
Яндекс.карты API
Ошибка 2.1.43-2.1.45 Cannot read property '1' of null
Геннадий
22 ноября 2016, 18:10

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

Совсем непонятно, что творится. В какой-то момент перестали работать карты. В консоли выдаёт ошибку "Cannot read property '1' of null".

Такая ошибка в версиях 2.1.43-2.1.45. В 2.1.42 уже всё нормально, правда, некоторый функционал был заточен под >2.1.42 и поэтому отвалился.

Дебаг показал, что ошибка появляется уже во время выполнения combine.js, когда парсится блок шаблона {% style %}...{% endstyle %}.

Подскажите, пожалуйста, что может быть?

Пример здесь:

http://gen.ruzray.ru/org/map=1

1 комментарий
ошибка,яндекс карты api
Не показываются балуны
a@leshkacho.ru
30 октября 2016, 18:16

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

На сайте использую карту, данные в нее загружаю через objectManager

$( "select.serviceFirst" ).change(function() {
			if ($(this).val()!=''){
				myMap.geoObjects.removeAll();
				curval = $(this).val();
				objectManager = new ymaps.ObjectManager({
		            // Чтобы метки начали кластеризоваться, выставляем опцию.
		            clusterize: false,
		            geoObjectOpenBalloonOnClick: true,
            		clusterOpenBalloonOnClick: true,
		            // ObjectManager принимает те же опции, что и кластеризатор.
		            gridSize: 32
		        });
		        objectManager.objects.options.set('preset', 'islands#greenDotIcon');
			    objectManager.clusters.options.set('preset', 'islands#greenClusterIcons');
			    myMap.geoObjects.add(objectManager);

			    $.ajax({
			        url: "<?=SITE_TEMPLATE_PATH?>"+"/map_"+curval+".json"
			    }).done(function(data) {
			    	console.log('ok');
			        objectManager.add(data);
			    });
			} else {
				if ($('select#city').val()!=''){
					myMap.geoObjects.removeAll();
					panto($('select#city option:selected').text());
				}
			}
		});

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

Вот пример json файла

{
	"type":"FeatureCollection",
	"features":[{
		"type":"Feature",
		"id":0,
		"geometry":{
			"type":"Point",
			"coordinates":"44.8350115,65.5009237"
		},
		"properties":{
			"baloonContent":"Bek",
			"clusterCaption":"\u043c\u0435\u0442\u043a\u0430",
			"hintContent":"\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430"
		}
	},
	{
		"type":"Feature",
		"id":1,
		"geometry":{
			"type":"Point",
			"coordinates":"42.8946592,71.3759428"
		},
		"properties":{
			"baloonContent":"\u0421\u0435\u0440\u0433\u0435\u0439",
			"clusterCaption":"\u043c\u0435\u0442\u043a\u0430",
			"hintContent":"\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430"
		}
	}]
}

5 комментариев
яндекс карты api,балун,балун-панель
Использование Я.Карт API
Каунников Александр
23 октября 2016, 23:21

Добрый вечер! Такой вопрос. Можно ли использовать Я.Карты для размещения метки на моём сайте за плату. Т.е. пользователь вводит адрес, оплачивает и только тогда его адрес с информацией попадает на карту. Например как на domofond.ru

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

Вопрос появился после прочтения "Условия использования сервиса «API Яндекс.Карты»", а именно п 2.3.2.

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

2 комментария
яндекс мап,яндекс карты api