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

Да, проблема была в функции работающей с событиями html-документа (переключение между radio передвигает карту в нужное место). Сменил window.onclick на window.onchange и все заработало.

Еще долго парился с восстановлением зума при перетаскивании карты, пришлось поменять panTo на setView.

Ребята, у меня тут вопрос: как с помощью leaflet и leaflet routing machine рисовать пути по своим координатам? leaflet routing machine берет координаты с OSRM, у меня же есть собственный сервис, который эти данные формирует. Может кто сталкивался - буду благодарен за подсказку.

Добрый день.
Подскажите как можно на основе leaflet построить карту с gps координат в реальном времени?
Спасибо.

Здравствуйте!
Могу справиться с задачей.
Суть в следующем.
Добавляю Маркеры, с событием Click


for(var i=0; i<lo_la.length; i++) {
	tower1[i] = lo_la[i].split(':');
		
	var markerLocation = new L.LatLng(tower1[i][1], tower1[i][0]);
	marker[tower1[i][2]] = new L.Marker(markerLocation,{icon: greenIcon, id:tower1[i][2]});
		
	map.addLayer(marker[tower1[i][2]]);
		    
        marker[tower1[i][2]].on("click", onMarkerClick);
}

Событие работает и индекс маркера отслеживается. Проверяю так:


function onMarkerClick() {
		alert(this.options.id);
}

Не могу разобраться как запросить по клику данные из PHP(mySQL) и поместить результат в popup.
Поделитесь, если у Вас есть решение этой задачки. Спасибо.

На каком шаге затрудняетесь? Сделать ajax запрос, сгенерировать ответ или поместить результат в popup.

function onMarkerClick() {
 //alert(this.options.id);

 //тут сделать ajax запрос
 //примерно так, с использованием jquery
 jQuery.ajax({
 url: "http://сайт/update.php", //адрес нужный напишите
 type: "GET", //хотя он и так по умолчанию GET, можно POST
 data: { //что послать серверу
id:this.options.id 
},
 dataType: "json",

  // это выполниться после ответа сервера
 success: function (json) {
  //допустим сервер вернет вам название {"name":"название"}
  
  alert(json.name); //покажет название
  
  //тут поместить результат в popup
  
 }

});

}

Код не проверял, просто как пример.

http://leafletjs.com/reference.html#popup - документацию надеюсь вы нашли.

Hruhoriy, вы начните хотя бы. Прям так с нуля не хочется делать за вас.

Друзья,
хочется сделать “ширину” наведения мыши на линию больше, чтобы нажатие на линию обрабатывалось и на некотором расстоянии от нее, а не прямо на ней.

В какую сторону копать?

Нарисуй поверх абсолютно прозрачную линии большей ширины и обрабатывай клики на неё.

Здравствуйте.
Подскажите пожалуйста есть ли скрипт с добавлением маркера как на официальном сайте? Гуугл, Яндекс и Яхуу устали мне искать информацию по реализации. Нужно что бы пользователь сам добавлял метки/маркеры на карту, а координаты отправлялись (POST) в базу. Через iframe не годится.

Ctrl+U тебе в помощь

map.on("click",function(a){
var marker = L.marker(a.latlng).addTo(map);
var popup = L.popup();
marker.bindPopup(popup).openPopup();
});

В popup.setContent() вставишь код, отвечающий за то, как будет выглядеть всплывающее сообщение. Там можно будет сделать кнопку, при нажатии на которую, можно отсылать координаты на сервер.

P.S. Если что - пиши в личку, договоримся :wink:

Всем привет!
Не могу найти, как сделать: делаю в Leaflet’e карту со слоями, подложка OSM Mapnik в стандартной проекции (EPSG:3857). А вот слои будут некоторые в 3857, а некоторые в 3395 (как Я.Карты, например). Как прописать проекцию отдельным слоям, а не всей карте?

Никак, Leaflet не делает перепроецирование.

А если на Яндекс.Карты API? Или OpenLayers, на худой конец? Делают же как-то люди?

UPD: Нашёл что-то похожее в API Яндекс.Карт: параметр слоя “projection: ym.projection.sphericalMercator”, думаю, это то, что нужно.

P.S. Вообще, это камень в огород Leaflet, жаль, что он не поддерживает такой очевидный юзкейс.

Попробуйте плагин https://github.com/kartena/Proj4Leaflet

Ахахахаха, камень в огород лифлета
самое смешное про библиотеку, что я слышал за этот год
если хочется яндекса в лифлете, почему бы не ввести «leaflet yandex» в поиск гугля?
https://github.com/shramov/leaflet-plugins/blob/master/examples/yandex.html

Здравствуйте! Пожалуйста, помогите.
Каким образом можно передавать значения новых точек, без обновления страницы, что бы точка появилась на карте (или продолжение отрезка)?

Добрый день.
Подскажите пожалуйста начинающему картографу.
У меня есть карта, собранная из собственных изображений которые были собраны, разложены по папкам и выведены по всем правилам.
http://blackdesert-info.ru/map/ - вот она.
У меня получилось разместить элементы управления для рисования отметок и установки меток.
**Но теперь вопросы: **
1. Как сделать так, что бы отметки сохранялись. Подскажите пожалуйста в какую сторону копать, что бы найти описание этого, можно даже eng источники. То есть что бы я, как администратор карты, мог установить все метки необходимые, сохранить, и другие могли бы их посмотреть.

2. Так же есть вопрос по подключению карты например на стороннем сайте.
Обычный код подключения карты:

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {

я же исходя из этого примера делаю следующим образом

L.tileLayer('http://blackdesert-info.ru/map/{z}/{x}/{y}.png', 

или

L.tileLayer('http://blackdesert-info.ru/map/w/{x}/{y}.png',

но карта не отображается, нигде, выводится белый фон.

Ну и третий вопрос, как мне на собственной карте узнать координаты? Например я хочу установить отметку, или же я её установил, каким образом узнать какие координаты она сейчас занимает?

Буду рад если вы, друзья, поможете мне в этом вопросе.
Могу дать личные контакты, если удобнее и быстрее это будет показать через teamwiever или skype.

Спасибо за внимание!

L.tileLayer('http://blackdesert-info.ru/map/w/{z}/{x}/{y}.png',

Тебе нужен свой сервер, который будет хранить и отдавать координаты.

За пример благодарю.
А что касается сервера, то где можно прочесть об этом? на VPS я же смогу это организовать? ил карту нужно крепить к mapbox например?

что-то я не очень понял, какой сервер? все же есть cледующий раз буду дочитывать вопрос
надо только png → jpg поменять

L.tileLayer('http://blackdesert-info.ru/map/w/{z}/{x}/{y}.jpg',