Leaflet — новая JavaScript-библиотека для карт от CloudMade

map.removeLayer(marker)

когда я вставляю карту в невидимый блок в центре экрана, кусочек карты видно только слева сверху.
так и должно быть? как карту вставить?
UPD: да, у яндекса тоже не работает.

В других картах есть такая возможность - если добавить много точек, то можно сделать так, чтобы они все были видимы (изменить масштаб и центр)
здесь такое есть?

ау. как сделать центр карты в центре точек?

fitBounds( <LatLngBounds> bounds )

Никогда не писал на JS ничего больше трех строк, но вот решил попробовать - получилось нечто, но работает не всё. Использовал Leaflet 0.5, плагины Bing и KML г-на Шрамова:


 	//base OSM layer
		var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {minZoom: 8, maxZoom: 17, attribution: 'Map data &copy; OpenStreetMap contributors'});

	//base Bing satellite imagery layer
		var bing = new L.BingLayer('тут - Basic Bing key, сгененированный для этого сайта');

	//custom KML vector layer
		var testkml = new L.KML("/maps/kml/test.kml", {async:true});

	//initialise map and layers
		var map = L.map('map', {
			center: [55.83, 37.71], //set initial map center
			zoom: 14, //set initial map zoom
			layers: [bing, osm, testkml]  //list layers
		});
	//define list of base layers
		var baseLayers = {
			"Bing satellite": bing,
			"OSM Mapnik": osm
		};
	//define list of overlays
		var overlays = {
			"KML Test": testkml
		};
	//add layers control to map
		L.control.layers(baseLayers, overlays).addTo(map);

Слой OSM - работает, слой KML - тоже, но:

  • Bing не работает (запрашивает тайлы по адресам типа ecn.t0.tiles.virtualearth.net/tiles/a.jpeg?g=1135, но ответ приходит текстовый, “Bad request”). API-ключ генерировал Basic, вставлен он полностью. (Пример, скопированный из репозитория г-на Шрамова тоже не работает, так что грешу на какие-то проблемы с API-ключом.)

  • Не могу понять как определить дефолтный базовый слой (сейчас автоматом ставится второй в списке). Вроде разобрался с этим пунктом - в конструкторе map оставил только osm - так он становится дефолтным.

Можешь в осмру глянуть https://github.com/ErshKUS/OpenStreetMap.ru/blob/master/www/js/Layer.TileLayer.Bing.js там larry0ua что то тоже правил чтоб работало, нужно конечно Павлу отправить пуллреквест, но кажется у нас уже сильно разошлись версии
ну и проверь api ключ, чтоб рабочий был.

После замены “официального” плагина на тот что на openstreetmap.ru все отлично заработало. Спасибо. Я просто сначала думал, что он там самописный совсем, чисто под этот сайт.

нужно использовать подложку с BBOX=&WIDTH=&HEIGHT=
что туда вставлять вместо {z}/{x}/{y}?

http://leafletjs.com/reference.html#tilelayer-wms

там в адрес добавляется srs=EPSG:3857
а мне нужно
SRS=EPSG:32646
из-за чего картинки не получаются :frowning:

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

Оба и отображаются, просто верхний перекрывает нижний. А как ты хотел их показывать?

Иконки можно развести, задав для них Icon c параметром iconAnchor

в гугле видел “1-й результат из 5 в этой области” в попапе

но я то не знаю, какие иконки стоят на одном месте

если линия задана как dashArray то кликабельной частью этой линии становятся края видимых отрезков.
возможно ли сделать всю линию кликабельной включая возможность клика за пределами отрезков?

Здравствуйте, скажите, а можно создать layer во всю карту с повторяющимся изображением?

В опенлеерс для такого надо было переопределить метод getURL для тайлового слоя. В лифлете думается примерно так же.

Спасибо)

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

Как ты собрался двигать маркер? Возможно, в этом поможет вот этот плагин. Он двигает маркер по координатам линии, например. Оттуда можно их и взять.