You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#201 2012-09-28 20:17:45
- CIIeKtR
- Member
- Registered: 2012-05-08
- Posts: 8
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Или подскажите как расширить circle, добавив ему контейнер с меткой?
Offline
#202 2012-09-29 18:46:07
- PShA
- Member
- Registered: 2011-07-26
- Posts: 170
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Попап он на то и попап чтоб быть одним.
Добавить метку можно с помощью DivIcon - в него можно запихать произвольный текст
Offline
#203 2012-09-29 18:54:48
- PShA
- Member
- Registered: 2011-07-26
- Posts: 170
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
2RedFox:
Какой-то баг с очередностью, вставил пока try-catch
Offline
#204 2012-10-04 19:13:42
- CIIeKtR
- Member
- Registered: 2012-05-08
- Posts: 8
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Попап он на то и попап чтоб быть одним.
Добавить метку можно с помощью DivIcon - в него можно запихать произвольный текст
Спасибо.
Offline
#205 2012-11-04 16:24:37
- dimqua
- Member
- Registered: 2012-11-04
- Posts: 2
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Если не трудно, ответьте, пожалуйста, на пару простых вопросов новичка.
1. Как сделать так, чтобы список слоёв отображался по щелчку, а не при наведении мыши на иконку? Т.е. как в Open Layers.
2. Для просмотра карты в полноэкранном режиме я использую плагин leaflet.fullscreen. По умолчанию он использует лишь одну иконку (переход в полноэкранный режим). Но было бы правильнее, если бы при переходе в полноэкранный режим он отображал бы другую иконку (переход в обычный режим), а не ту же самую. Т.е., как плагин для Open Layers <https://github.com/fredj/openlayers-fullscreen>.
Offline
#206 2012-11-15 12:28:52
- vvoovv
- Moderator
- Registered: 2008-03-04
- Posts: 2,262
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Я работаю над библиотекой djeo, которая позволяет создавать географические браузерные приложения на основе лучших географических веб-API, используя единый программный интерфейс.
Только что я добавил поддержку Leaflet.
Также поддерживаются
Google Maps API
Google Earth API,
ArcGIS API for JavaScript
Yandex Maps API
Вот демо-пример под управлением Leaflet, который позволяет просматривать содержимое OSM-файла. Важно: происходит загрузка OSM-файла размером 12 Мб!
С работой других движков и описанием демо-примера можно ознакомится в соседней теме.
Приглашаю послушать мой доклад на конференции Открытые ГИС! в субботу, 17 ноября, в 17.40:
Библиотека djeo: единый API для лучших географических веб-API
Доклад разработчика Leaflet, Владимира Агафонкина, будет в воскресенье, 18 ноября, в 13.40. Семинар о Leaflet будет в также в воскресенье, 18 ноября, в 11.20
Last edited by vvoovv (2012-11-15 12:35:18)
Offline
#207 2012-11-16 11:15:12
- denisPskov
- Member
- Registered: 2011-06-07
- Posts: 115
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
geojson = L.geoJson(bdata, {
style: function(feature) {
switch (feature.properties.name) {
case 'Network': return netstyle;
default: return allstyle;
}
},
onEachFeature: onEachFeature,
filter: function(feature, layer) {
return feature.properties.network;
},
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, pcstyle);
}
});var baseMaps;
var overlayMaps;
var control;baseMaps = {"Администрация ПО": l1, "Сетевая инфраструктура": l2};
overlayMaps = {"Сетевая инфраструкткра 1-ого этажа": geojson};
control = L.control.layers(baseMaps, overlayMaps);
map.addControl(control);map.p=0;
map.r=0;
addlevel = function(e) {
if (map.hasLayer(geojson)) {
if (map.getZoom()>=13) {
map.addLayer(pc1);
map.addLayer(pc2);
}
else {
map.p=1;
}
}
if (map.hasLayer(l1) && map.r==1) {
// map.removeControl(control);
control.addOverlay(geojson,"Сетевая инфраструкткра 1-ого этажа");
// baseMaps = {"Администрация ПО": l1, "Сетевая инфраструктура": l2};
// overlayMaps = {"Сетевая инфраструкткра 1-ого этажа": geojson};
// control = L.control.layers(baseMaps, overlayMaps);
// map.addControl(control);
map.r=0;
}
if (map.hasLayer(l2)) {
if (map.hasLayer(geojson)) {
map.removeLayer(geojson);
}
// map.removeControl(control);
control.removeLayer(geojson);
// baseMaps = {"Администрация ПО": l1, "Сетевая инфраструктура": l2};
// control = L.control.layers(baseMaps, null);
// map.addControl(control);
map.r=1;
}
}removelevel = function(e) {
if (!map.hasLayer(geojson) && map.hasLayer(pc2) && map.hasLayer(pc1)) {
map.removeLayer(pc2);
map.removeLayer(pc1);
}
}handleZoomChange = function(e){
if(map.getZoom()>=13) {
if (map.p==1 && map.hasLayer(geojson)) {
map.addLayer(pc2);
map.addLayer(pc1);
map.p=0;
}
}
else {
if (map.p==0 && map.hasLayer(geojson)) {
map.removeLayer(pc2);
map.removeLayer(pc1);
map.p=1;
}
}
}map.on({layeradd: addlevel,
layerremove: removelevel,
zoomend: handleZoomChange
});
при переключении на слой l2 выдает ошибку 'Cannot read property 'layerId' of undefined', если убрать '//'(поставить где надо), то выдает 'Cannot call method 'removeLayer' of null', в чем причина???? или какой альтернативный вариант динамического control.layers?
Offline
#208 2012-11-22 10:27:40
- s-s-s
- Member
- From: Russia, Moscow
- Registered: 2009-09-10
- Posts: 373
- Website
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Всем привет.
Хотелось бы иметь такой функционал у себя в Leaflet
Карта с удобным просмотром координат + калькулятор координат - http://pohodushki.org/ru/conversion-geo-coordinates
Может он уже есть?
С уважением, Сергей.
Offline
#209 2012-11-22 14:21:30
- putnik
- Member
- From: Moscow
- Registered: 2008-03-04
- Posts: 121
- Website
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Всем привет.
Хотелось бы иметь такой функционал у себя в Leaflet
Карта с удобным просмотром координат + калькулятор координат - http://pohodushki.org/ru/conversion-geo-coordinates
Может он уже есть?
Так всё же есть для этого: поменяли поле — пересчитайте остальные и передвиньте маркер; передвинули маркер — получите координаты и пересчитайте табличку.
Offline
#210 2012-11-22 15:32:45
- PShA
- Member
- Registered: 2011-07-26
- Posts: 170
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
map.on("moveend", пересчитать(map.getCenter());
Offline
#211 2012-12-06 13:45:51
- msTi
- Member
- Registered: 2012-12-06
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Смотрю на пример ImageOverlay из документации:
var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',
imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];
L.imageOverlay(imageUrl, imageBounds).addTo(map);возможно ли imageBounds в примере для ImageOverlay задать в виде исходной точки, а вот на сколько растянуть оверлей определяется автоматически в зависимости от ширины и высоты рисунка? при этом всем используемая система координат не имеет значения.
нужно сделать что то вроде тынц.
Offline
#212 2012-12-12 06:53:34
- AndreyCool
- Member
- Registered: 2012-09-14
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Добрый день, возможно ли задать ограничивающую область экрана, за которую нельзя сдвинуть карту?
Наколхозить я сам могу, но может есть стандартные методы?
Offline
#213 2012-12-12 10:36:17
- msTi
- Member
- Registered: 2012-12-06
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Добрый день, возможно ли задать ограничивающую область экрана, за которую нельзя сдвинуть карту?
Наколхозить я сам могу, но может есть стандартные методы?
maxBounds
Offline
#214 2012-12-12 12:11:30
- AndreyCool
- Member
- Registered: 2012-09-14
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
maxBounds
не совсем то
also not allowing to zoom out to a view that's larger than the given bounds (depending on the map size).
нужная область зумится больше, чем нужно
Offline
#215 2012-12-13 10:50:27
- 2Gareen
- Member
- Registered: 2012-12-13
- Posts: 2
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Приветствую всех. Есть вопрос: можно ли задать id объекту на карте(маркер, полигон) и получать его при клике по объекту? Это нужно для автоматической подгрузки текста в popup. Заранее благодарю за помощь.
Offline
#216 2012-12-13 12:55:33
- msTi
- Member
- Registered: 2012-12-06
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Приветствую всех. Есть вопрос: можно ли задать id объекту на карте(маркер, полигон) и получать его при клике по объекту? Это нужно для автоматической подгрузки текста в popup. Заранее благодарю за помощь.
new L.marker(
new L.LatLng(LAT, LNG),
{
id: 1
})https://github.com/ssouk/Leaflet/commit/155557
оно?
Offline
#217 2012-12-13 15:14:18
- vvoovv
- Moderator
- Registered: 2008-03-04
- Posts: 2,262
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Приветствую всех. Есть вопрос: можно ли задать id объекту на карте(маркер, полигон) и получать его при клике по объекту? Это нужно для автоматической подгрузки текста в popup. Заранее благодарю за помощь.
Любому javascript-объекту можно задать любое свойство.
Offline
#218 2012-12-13 15:54:58
- Ia_Alex
- Member
- Registered: 2012-12-12
- Posts: 3
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
2Gareen wrote:Приветствую всех. Есть вопрос: можно ли задать id объекту на карте(маркер, полигон) и получать его при клике по объекту? Это нужно для автоматической подгрузки текста в popup. Заранее благодарю за помощь.
Любому javascript-объекту можно задать любое свойство.
а такой вот к вам вопрос - мне необходимо двигать на карте popup!....но я так понимаю в этой билиотеке нет достпуа к DOM popup, так как не получилось отловить событие на нём-просто ничего не происходит!...что можно сделать в данном случае?
Заранее спасибо.
Last edited by Ia_Alex (2012-12-13 15:55:13)
Offline
#219 2012-12-14 07:48:08
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,547
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Ну можно же пробежаться по всему ДОМу и найти
classList ->
0 "leaflet-popup"
1 "leaflet-zoom-animated"Offline
#220 2012-12-14 11:51:18
- 2Gareen
- Member
- Registered: 2012-12-13
- Posts: 2
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
new L.marker( new L.LatLng(LAT, LNG), { id: 1 })
Да, msTi, спасибо, оно. Теперь осталось разобраться с динамической подрузкой контента в popup. Отсюда ещё один вопрос: можно ли при объявление элемента привязать к нему javascript, который бы срабатывал на событие (в моем случае onClick)? И снова заранее благодарю ![]()
Last edited by 2Gareen (2012-12-14 12:11:11)
Offline
#221 2012-12-14 13:46:58
- AndreyCool
- Member
- Registered: 2012-09-14
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
метод unbindPopup определен только для маркеров? как от балуна избавиться у других объектов?
Offline
#222 2012-12-14 15:55:47
- Ia_Alex
- Member
- Registered: 2012-12-12
- Posts: 3
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Ну можно же пробежаться по всему ДОМу и найти
classList -> 0 "leaflet-popup" 1 "leaflet-zoom-animated"
их я нахожу.....но ничего с ними делать не могу( такое ощущение что popup находится под другим слоем!:o
Offline
#223 2012-12-17 06:49:58
- msTi
- Member
- Registered: 2012-12-06
- Posts: 11
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Да, msTi, спасибо, оно. Теперь осталось разобраться с динамической подрузкой контента в popup. Отсюда ещё один вопрос: можно ли при объявление элемента привязать к нему javascript, который бы срабатывал на событие (в моем случае onClick)? И снова заранее благодарю
на ".on click" маркера вешаем код
Usage example
If you want to just bind a popup to marker click and then open it, it's really easy:marker.bindPopup(popupContent).openPopup();
значение переменной popupContent определяется при клике по маркеру.
Offline
#224 2012-12-17 18:20:02
- vvoovv
- Moderator
- Registered: 2008-03-04
- Posts: 2,262
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Просмотрел все события объекта карты, но так и не нашел события типа center_changed или bounds_changed.
Как узнать, что центр карты или видимая область поменялись?
Offline
#225 2012-12-17 19:30:34
- PaulKaz
- Member
- Registered: 2010-06-01
- Posts: 89
Re: Leaflet — новая JavaScript-библиотека для карт от CloudMade
Как узнать, что центр карты или видимая область поменялись?
Для центра карты:
map.on('moveend', function(e) {
alert(e.latlng);
});Offline