You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
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

PShA wrote:

Попап он на то и попап чтоб быть одним.
Добавить метку можно с помощью 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

s-s-s wrote:

Всем привет.
Хотелось бы иметь такой функционал у себя в  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

AndreyCool wrote:

Добрый день, возможно ли задать ограничивающую область экрана, за которую нельзя сдвинуть карту?
Наколхозить я сам могу, но может есть стандартные методы?

maxBounds

Offline

#214 2012-12-12 12:11:30

AndreyCool
Member
Registered: 2012-09-14
Posts: 11

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

msTi wrote:

maxBounds

не совсем то sad

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

2Gareen wrote:

Приветствую всех. Есть вопрос: можно ли задать 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

2Gareen wrote:

Приветствую всех. Есть вопрос: можно ли задать id объекту на карте(маркер, полигон) и получать его при клике по объекту? Это нужно для автоматической подгрузки текста в popup. Заранее благодарю за помощь.

Любому javascript-объекту можно задать любое свойство.

Offline

#218 2012-12-13 15:54:58

Ia_Alex
Member
Registered: 2012-12-12
Posts: 3

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

vvoovv wrote:
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

msTi wrote:
new L.marker(
  new L.LatLng(LAT, LNG),
  {
    id: 1
  })

https://github.com/ssouk/Leaflet/commit/155557
оно?

Да, msTi, спасибо, оно. Теперь осталось разобраться с динамической подрузкой контента в popup. Отсюда ещё один вопрос: можно ли при объявление элемента привязать к нему javascript, который бы срабатывал на событие (в моем случае onClick)? И снова заранее благодарю wink

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

freeExec wrote:

Ну можно же пробежаться по всему ДОМу и найти

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

2Gareen wrote:

Да, msTi, спасибо, оно. Теперь осталось разобраться с динамической подрузкой контента в popup. Отсюда ещё один вопрос: можно ли при объявление элемента привязать к нему javascript, который бы срабатывал на событие (в моем случае onClick)? И снова заранее благодарю wink

на ".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

vvoovv wrote:

Как узнать, что центр карты или видимая область поменялись?

Для центра карты:

map.on('moveend', function(e) {
    alert(e.latlng);
});

Offline

Board footer

Powered by FluxBB