Pull to refresh
  • by relevance
  • by date
  • by rating

Kothic JS: рендерер OpenStreetMap, поддерживающий MapCSS/0.2, портировали на джаваскрипт, рисующий по холсту

OpenStreetMap *
Многим поклонникам OpenStreetMap хорошо известен рендерер (отрисовщик) под названием Kothic, отличающийся неплохою поддержкою перспективного черновика стандарта картографических стилей MapCSS/0.2 и способный рисовать зрелищные векторные карты (даже и псевдо-3D — в косоугольной проекции, судя по скриншотам).

Несколько дней назад без особого шума (если не считать отдельной страницы в вики OSM да ещё одной записи в твиттере у автора другой небезынтересной библиотеки — Leaflet, о которой упоминалось ужé на Хабрахабре и которая успела с тех пор заметно подразвиться) на свет Божий вышла версия Kothic, портированная на JavaScript и называющаяся по такому случаю Kothic JS. Взаимодействуя с Leaflet, скрипт Kothic JS отрисовывает векторную карту на холстах (HTML5 canvas) и формирует из этих холстов квадратные плитки («тайлы») для картографического движка Leaflet. Всё это происходит прямо во браузере.

Читать дальше →
Total votes 30: ↑22 and ↓8 +14
Views 3.5K
Comments 37

Интернет картография с открытым исходным кодом

Open source *
Здравствуйте. Я продолжаю серию статей, про картографирование в интернете с использованием набора программного обеспечения с открытым исходным кодом MapBox, от компании Development Seed.

Предыдущие части:
  1. Обзор студии
  2. Введение в TileMill
  3. Расширенные возможности

Сегодня я рассмотрю:
  • Высокопроизводительный тайловый сервер TileStream
  • Легковесные картографические библиотеки Modest Maps и LeafLet
  • Использование TileStream вместе с картографической библиотекой OpenLayers
  • Использование расширенных возможностей TileMill с помощью библиотеки Wax


Интересно? Приглашаю под кат.
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Views 7.9K
Comments 7

Русская вики-энциклопедия «Традиция» теперь содержит 27 000 статей

Crowdsourcing
Сегодня утром, завершив в вики «Традиция» работу над статьёю «Ацтекизация», я с удовлетворением обнаружил, что эта статья стала двадцатисемитысячною по счёту.

Взятие этого рубежа, достижение этого охвата радует меня немало. В России лишь четыре энциклопедические вики превосходят Традицию по числу статей: это две специализированные энциклопедии про кино Энциклопедия кино RuData», насчитывающая 340 769 статей, и «Всё о кино», насчитывающая 47 406 статей), а также два научно-образовательных проекта Виртуальная лаборатория», содержащая 204 082 статьи, и проект «Летописи», где 43 091 статья).

Кажется, это повод рассказать о Традиции на Хабрахабре.

Читать дальше →
Total votes 48: ↑15 and ↓33 -18
Views 1.6K
Comments 33

Самовызывающийся конструктор Джона Резига и размышление о том, почему это решение не прижилось

JavaScript *
Tutorial
Настала пора мысленно вернуться на четыре с небольшим года назад ко блогозаписи «Simple “Class” Instantiation» из блога Джона Резига, прославленного создателя необыкновенно удобной библиотеки jQuery. И вернёмся.

Однако же, так как я вовсе не вижу её в результатах поиска на Хабрахабре по слову «Resig», то поневоле приходится думать, что эту полезную блогозапись никто не удосужился перевести (или хотя бы пересказать) за четыре прошедших года — мне придётся, стало быть, самостоятельно пересказать блогозапись Резига прежде, чем я исполню моё главное намерение: поразмыслить вслух, почему же предложенный Резигом способ решения указанной им проблемы так и не сделался общераспространённым. И перескажу. (Сам этот пересказ ужé был бы полезен читателю, даже кабы я к нему ничего от себя не прибавил. А я прибавлю.)



Шестого декабря 2007 года Резиг рассмотрел, что получается, когда в джаваскрипте используется операция «new» для создания объекта (в языках с классами мы сказали бы «экземпляра класса»):

function User(first, last){
   this.name = first + " " + last;
}

var user = new User("John", "Resig");

Резиг справедливо подметил, что для начинающих программистов на джаваскрипте не вполне очевидно, что появление «this» в коде функции указывает на то, что перед нами конструктор объекта. (Я от себя в скобках прибавлю: если функция находится в недрах некоторой библиотеки, то это обстоятельство нуждается также и в документировании — а не то пользователь библиотеки не многим будет отличаться от новичка: исходный код с телом функции читают не все, тем более что он нередко применяется в минифицированном, не читаемом виде.)

Поэтому, рассудил Резиг, рано или поздно кто-нибудь попробует вызвать «User()» без «new» и тем получит на свою голову сразу две неприятные проблемы. Во-первых, переменная «user» останется неопределённою: функция «User()» задумана ведь как конструктор, а значения она никакого не возвращает. Во-вторых, что ещё хуже, попытки обращения к «this» изнутри такого (некорректно вызванного) конструктора неизбежно приведёт к засорению глобального пространства имён — а это чревато зловещими и трудноуловимыми последствиями. Обе проблемы Джон Резиг продемонстрировал на примере:

var name = "Resig";
var user = User("John", name);
// здесь переменная «user» не определена
// БОЛЕЕ ТОГО: значение «name» теперь ужé не «Resig»!
if ( name == "John Resig" ) {
   // фигассе!…
}

Читать дальше →
Total votes 78: ↑67 and ↓11 +56
Views 12K
Comments 50

Leaflet — API карт от Cloudmade. Рецензия

Interfaces *
To Mourner — бойся своих желаний, они могут исполниться. Шутка.

Начнём с начала



На главной Leaflet API нас встречает quickstart-пример. С него и начнём.

// create a CloudMade tile layer
var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/YOUR-API-KEY/997/256/{z}/{x}/{y}.png',
    cloudmadeAttribution = 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
    cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18, attribution: cloudmadeAttribution});

// initialize the map on the "map" div
var map = new L.Map('map');

// set the map view to a given center and zoom and add the CloudMade layer
map.setView(new L.LatLng(51.505, -0.09), 13).addLayer(cloudmade);

// create a marker in the given location and add it to the map
var marker = new L.Marker(new L.LatLng(51.5, -0.09));
map.addLayer(marker);

// attach a given HTML content to the marker and immediately open it
marker.bindPopup("A pretty CSS3 popup.<br />Easily customizable.").openPopup();


Пример начинается с создания слоя с тайлами от cloudmade. Само API вроде как тоже «by cloudmade». Внимание, вопрос: а что, для родительского/дружественного проекта нельзя сделать удобный способ добавления слоя тайлов? Типа такого:

var cloudmade = new L.CloudMade.TileLayer(YOUR-API-KEY);
?
Или даже такого:
map.addLayer('cloudmade', { apiKey: YOUR-API-KEY });


Не знаю, какие отношения связывают Leaflet и Cloudmade, но уж сделать удобно клиенту Cloudmade — точно не последняя задача Leaflet API. Заставлять пользователя самостоятельно добавлять копирайт Cloudmade — это какое-то насилие над здравым смыслом.

Чайнинг



Читать дальше →
Total votes 74: ↑67 and ↓7 +60
Views 34K
Comments 34

Вышла библиотека Leaflet версии 0.3

OpenStreetMap *
Вчера (13 февраля 2012 г.) mourner (Владимир Агафонкин) объявил в Твиттере о выходе новой версии (0.3) его библиотеки Leaflet (разработанной для компании CloudMade), которая обеспечивает простой API, управляющий размещением географических карт на WWW-страницах.

Простота API, свободный (открытый на GitHub) код и небольшой размер (≈100 Kb) библиотеки Leaflet обеспечили ей в последнее время (особенно после возрастания платности Google Maps API, альтернативою которому Leaflet может послужить) значительную популярность среди потребителей карт OpenStreetMap, распространяемых как CloudMade, так и другими тайловыми серверами. (Гибкость API такова, что Leaflet можно настроить на употребление какого угодно тайлового сервера.)

Новая версия (Leaflet 0.3) снабжена обширным списком нововведений, улучшений и исправлений. Величина и содержимое этого списка недвусмысленнейше подсказывает, что всем авторам сайтов, использовавших Leaflet прежних версий, уместно перейти на версию 0.3 как можно скорее — и для своего собственного удобства, и для блага читателей (особенно употребляющих мобильники да планшеты).
Total votes 29: ↑26 and ↓3 +23
Views 1.4K
Comments 6

OpenStreetMap News №13: foursquare и скорая помощь используют OSM, OSM представлен в парламенте Франции, ЕС рекомендует OSM, новые спутниковые снимки, создан Совет Российского OSM

Open source *OpenStreetMap *
Под катом ещё новости
Читать дальше →
Total votes 58: ↑48 and ↓10 +38
Views 2.5K
Comments 22

OpenStreetMap на каждый день

OpenStreetMap *

На хабре OSM упоминают постоянно, вот только репутация у проекта, похоже, совсем никакая: кучка людей что-то программирует, рисует какие-то линии и отношения, борется за лицензионную чистоту. Но на самом деле проект совсем про другое: дать каждому карту, с которой можно делать что угодно: те же гуглокарты, те же Яндекс.Карты, но которые при желании можно поправить или скачать на мобильное устройство.

Поэтому я хочу рассказать об основах: как эти карты заменили мне яндекс почти во всех каждодневных задачах.

Читать дальше →
Total votes 65: ↑65 and ↓0 +65
Views 73K
Comments 32

Отображаем карты OpenStreetMap на iPhone 4 с учётом сетчаточного дисплея при помощи Leaflet

OpenStreetMap *
Всякий, кому до сегодняшнего дня доводилось запускать полноэкранный пример работы движка Leaflet на новейших мобильниках iPhone 4, неизменно получал перед собою вот какую карту OpenStreetMap в новоайфоновском разрешении 640×960:

[скриншот]

Как видите, векторный гипертекст (подпись под картою) выглядит существенно лучше по качеству, чем растровый текст (надписи на карте) и чем контуры дорог на карте. Это потому, что растровые картинки на сетчаточном дисплее по умолчанию состоят из квадратов 2×2 реальных (физических) пикселов — стало быть, растровый текст получается угловатым, контуры дорог получаются ступенчатыми, и так далее.

Сегодня это положение дел изменилось к лучшему.

Читать дальше →
Total votes 34: ↑17 and ↓17 0
Views 3K
Comments 17

Leaflet 0.4 — новая версия открытой JS-библиотеки для интерактивных карт

Website development *JavaScript *Maps API *


После пяти с половиной месяцев разработки с момента выхода предыдущей версии, очень рад наконец представить вам Leaflet 0.4 — новую версию легковесной JavaScript-библиотеки для интерактивных карт, которая одинаково хорошо работает и на десктопных браузерах, и на мобильных устройствах.

Этот релиз, к которому приложило руку 33 разработчика, несёт в себе более простой, удобный API и громадное множество улучшений и исправлений вместе с масштабным обновлением документации, запуском официального блога и страничкой плагинов. Давайте рассмотрим улучшения по порядку.
Читать дальше →
Total votes 77: ↑74 and ↓3 +71
Views 16K
Comments 30

Визуализируем геоинформацию из логов на web-карте в реальном времени

Ajax *JavaScript *Java *
Tutorial


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views 16K
Comments 24

OpenStreetMap переходит на Leaflet вместо OpenLayers

OpenStreetMap *
Долгое время основной сайт OpenStreetMap использовал джаваскриптовую библиотеку OpenLayers в качестве средства для отображения географических карт на сайте с возможностью их увеличения, уменьшения и перетаскивания мышью, а также выбора «слоёв» (карт и меток).

Вчера (23 ноября) сайт OpenStreetMap перешёл к использованию библиотеки Leaflet, которая умеет всё то же сáмое, при этом отличаясь лучшей поддержкою мобильных устройств, и небольшим размером, и неплохим API.

Это светлый день для Владимира Агафонкина (Mourner), создателя Leaflet, и для всех тех, кто помогал этому проекту с открытым исходным кодом — присылал свой код, помогал идеями, тестировал.

Да и всем пользователям OpenStreetMap будет теперь поудобнее.
Total votes 97: ↑88 and ↓9 +79
Views 22K
Comments 50

Карты в браузере без сети: open source наносит ответный удар

JavaScript *OpenStreetMap *Maps API *
Как-то давно я писал о том как можно в вебе использовать карты без сети и пытался сделать это с помощью гугло карт. К сожалению условия использования запрещали модифицировать ресурсы, а написанный мною код работал только с localStorage, поэтому я решил перейти на светлую сторону силы, где код открыт, прост и понятен.
Читать дальше →
Total votes 61: ↑59 and ↓2 +57
Views 40K
Comments 21

Для этого есть карта

Geoinformation services *GitHub
Translation
Не так давно мы начали рендерить 3D-модели на Гитхабе. Сегодня мы с удовольствием объявляем о новейшем прибавлении в семействе визуализаций — о геоданных. Любой файл .geojson в репозитории на Гитхабе теперь станет автоматически отображаться в качестве интерактивной карты (с возможностью листания), снабжённой вашими геоданными.

[скриншот 2013-06-13 10:23:32]

Люди ужé используют Гитхаб для хранения разных геоданных, от почтовых индексов Чикаго и до радиостанций сообществ да путей движения известных в истории ураганов, так что мы с нетерпением ожидаем увидеть дальнейшие плоды сотрудничества сообществ.

«Под капотом» мы используем Leaflet.js для отображения данных geoJSON поверх специальной версии базового слоя карты улиц MapBox упрощённого, чтобы данные ваши на нём воссияли. Лучше же всего — то, что картооснова использует данные OpenStreetMap; так что, если пожелаете улучшить какой-либо участок её, редактируйте тотчас же.

Карты на Гитхабе поддерживают отображение данных ГИС как точек, линий и многоугольников. Вы даже можете донастроить способ отображения ваших данных — например, изменить цвета и размеры отдельных пометок, указать более понятные значки, указать дополнительные свéдения для чтения читателем, ткнувшим по заинтересовавшей его пометке на карте.

Читать дальше →
Total votes 74: ↑68 and ↓6 +62
Views 16K
Comments 17

Мы хотим от тебя сына!

2ГИС corporate blog Maps API *Geoinformation services *
Хабравчане, привет.

Вкратце: этот пост про неофициальный рейтинг зданий, Хакатон компании 2ГИС и про то, как мы сами немного обалдели от того, что натворили.



Читать дальше →
Total votes 136: ↑103 and ↓33 +70
Views 54K
Comments 70

Карты для всех, даром

JavaScript *OpenStreetMap *
Программисты — редкие люди. Мы можем сделать абсолютно всё, но интернет отвечает на это зияющей пустотой, где нужно делать абсолютно всё. Особенно если живёшь в непрофильных сообществах. Запросы со всех сторон, тут нужно подлатать, там плагинчик дописать, и никто, кроме тебя. Эта история — про один из таких пробелов, который я надеялся закрыть за неделю, и та неделя всё продолжается. В программе: дорожное строительство и велосипедисты, сайт для обмена картами лучше яндекса, осмеры без осма, архитектура плагинов в форумных движках и интерактивные карты прямо в хабре.

Читать дальше →
Total votes 107: ↑103 and ↓4 +99
Views 51K
Comments 35

2GIS API 2.0

2ГИС corporate blog JavaScript *Maps API *
Мы рассказали про новый 2ГИС почти всё. Точнее, почти обо всём, с чем сталкивается пользователь. Настало время рассказать о том, что у него “под капотом”. Угадали, речь об API 2ГИС.

Если вы пользовались новым 2ГИС с момента его появления, вы уже видели 2GIS API 2.0 в деле. Сегодня же он вышел из статуса беты и стал доступен всем желающим. Отдельно хотим поблагодарить тех, кто участвовал в тестировании: ребята, спасибо, вы помогли сделать продукт именно таким, каким он получился. То есть более, чем неплохим.

Если вам не терпится попробовать новый API, то посмотрите сюда. Те, кто любит не только смотреть, но и читать, загляните под кат.


Читать дальше →
Total votes 82: ↑76 and ↓6 +70
Views 49K
Comments 32

Построение параллельных кривых в картографических веб-приложениях

JavaScript *Geoinformation services *
Sandbox
В ходе работы над веб-картой в рамках проекта возникла задача отображения линий метрополитена на карте. Казалось бы, что в этом сложного? По сути — ничего, пока вам не требуется визуализировать различные маршруты, физически проходящие по одному месту. С такой ситуацией мы столкнулись при попытке отобразить линии амстердамского метрополитена.


Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 15K
Comments 11

Редактирование пространственных данных в Leaflet

JavaScript *Maps API *Geoinformation services *
Sandbox
Несмотря на развитие картографических веб-фреймворков, редактирование векторных географических данных всё ещё, по большей части, происходит в настольных приложениях. На дворе 2015-й год, пора бы уже переходить к редактированию в браузерах.

Для отрисовки веб-карт существует несколько открытых библиотек, например, OpenLayers и Leaflet. Довольно давно наш выбор пал на Leaflet и мы продолжаем его активно использовать при реализации проектов. Для редактирования геоданных хотелось бы использовать его же и, при этом, иметь возможность интегрироваться с существующими хранилищами пространственных данных.

Для достижения последней цели как правило используются ГИС-сервера (geoserver, mapserver), которые умеют публиковать большое количество разнообразных форматов данных по стандартам OGC. Так, WMS протокол прекрасно справляется с функцией визуализации готовой карты, но не предполагает функции редактирования, для которой резонно использовать WFS-протокол с возможностью изменения данных. Запросы к WMS возвращают уже отрисованные тайлы — картинки, а к WFS — сырую информацию, «исходный код» за этими тайлами. Leaflet поддерживает модули расширения, соответственно, можно поискать готовый компонент, либо написать свой. Т.к. поиск готовых модулей для Leaflet удовлетворяющих результатов не дал, мы приступили к собственной реализации.

По статистике запросов на leaflet.uservoice.com понятно, что данный модуль интересен не только нам.
Приступим к реализации
Total votes 13: ↑13 and ↓0 +13
Views 16K
Comments 5

Моя первая карта на Leaflet.js

Maps API *Geoinformation services *
Sandbox
Как я делал свою первую карту на Leaflet.js.

Я ничего не понимаю в картографии и геоинформационных сервисах, поэтому эта статья будет скорее ознакомительная и в помощь новичкам, так как многой информации на русском языке в интернете по-моему нету, а до какой-то я дошел случайно.

Итак задание было следующее: есть черно-белый планшет (маленький кусок карты города) размером 5913x7863 пикселей в формате .bmp + .shp слои.
(изначально карты были отрисованы в формате .dwg (формат автокада), но это закрытый формат и с ним ничего не сделаешь, поэтому ребятам пришлось сохранить каждый слой отдельно в .shp + атрибутивные данные в .dbf)

Из этого всего нужно сделать онлайн карту, основной функционал которой — это вывод атрибутов при нажатии на слой и включение/отключение этих слоёв.

Выбор пал на leaflet.js, так как это оболочка с открытым кодом, на ней сделаны OSM и мой любимый 2GIS. К тому же он хорошо работает на мобильных устройствах.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 35K
Comments 25
1