Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

9 лет назад я разрабатывал геолокационную соц.сеть на заказ, где мы отображали чаты на карте. До релиза не дошло, но интересного опыта было получено много. В очередной статье из серии рассказываю про то, как обрабатывать нажатия на MapBox и любой другой карте (Google, Yandex – не важно) и находить нужные объекты на ней, привязанные к координатам.

https://habr.com/ru/articles/1051948/

#iOS #Swift #алгоритмы #QuadTree #структуры_данных #пространственный_индекс #сферическая_геометрия #Mapbox #карты #оптимизация

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

В прошлой части я рассказывал, как я ушел от UIView-аннотаций на карте и начал рисовать облака через GL-слои. FPS от этого действительно стал сильно лучше: карта перестала страдать от тысяч...

Хабр

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

Как-то раз я разрабатывал геолокационную соцсеть. Эта статья – продолжение предыдущей, в ней описывается, как определить, на что на карте нажал пользователь, если движок нам не предоставляет такую информацию. Как только маркеры на карте перестают быть UIView и становятся точками в GL-слое, карта больше не знает, на что ты тапнул: она отдаёт только координату пальца, а дальше твои проблемы. Разбираю, как клиентский QuadTree на плоскости сферического меркатора превращает «на какое из тысячи облаков я попал» и «какие показать в кадре» из O(n)-перебора в спуск по дереву за O(log n). Заодно — зачем для перевода «пиксели ↔ метры ↔ координаты» пришлось портировать в Swift кусок сферической тригонометрии из Google Maps Utils, и почему «честный» top-N в отборе аур проиграл намеренно неравномерному 20/60/20.

https://habr.com/ru/articles/1051694/

#алгоритмы #QuadTree #структуры_данных #пространственный_индекс #сферическая_геометрия #Mapbox #карты #оптимизация

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

В прошлой части мы научились рисовать на карте тысячи облаков, не убивая FPS, – перенесли рендер с UIView-аннотаций на GL-слои. Но у этого решения есть оборотная сторона, про которую я тогда умолчал....

Хабр

Как нарисовать тысячи объектов на карте и не убить FPS: эволюция рендера на Mapbox GL

Когда-то давно я разрабатывал геолокационную соцсеть, где на карте живут «облака» — посты, привязанные к точке. И этих облаков на экране могло быть очень и очень много. Наивный подход «одно облако = одна аннотация-UIView» упирается в потолок уже на десятках точек: карта превращается в слайд-шоу. Здесь история о том, как я пять раз упёрся в производительность и в итоге переехал на GL-слои с data-driven выражениями: три движка рендера на разных зумах, круги постоянного реального размера в метрах через metersPerPixel, а вся zoom-зависимость считается на GPU. И отдельно — как анимировать прозрачность GL-слоя, у которого вообще нет анимируемого свойства

https://habr.com/ru/articles/1051362/

#iOS #Swift #Mapbox #карты #рендеринг #производительность #оптимизация #GPU #FPS #datadriven

Как нарисовать тысячи объектов на карте и не убить FPS: эволюция рендера на Mapbox GL

В прошлой статье про нетривиальные анимации я обещал показать «ту самую карту с облаками, zoom и движением по кривой Безье». Пришло время. Начну, правда, не с самой анимации, а с того, что было до...

Хабр

🚀 QGIS2VectorTiles v3.2 is here!

🧩 Centroid Fill symbol layers now match QGIS behavior in the output web viewer - on the largest part or on every part.

🖼️ New Icon Quality setting for sharper sprites than ever.

🔥 Still using ESRI's VTPK? Switch to an open, free, and fully customizable workflow.

❤️‍🔥 Go #FOSS ! Boost, rate, and spread the word!

🔗 https://gallpeters.github.io/QGIS2VectorTiles/

#opensource #maplibre #vectortiles #qgis #gdal #gis #openlayers #geoserver #maptiler #mapbox

Most projects: we should follow semantic versioning to make sure people have an idea of the impact any release can have

#Mapbox: Let's use release numbers that look like semantic ones, but release a breaking change in a minor version… 🤪

https://github.com/mapbox/mapbox-gl-js/releases/tag/v3.25.0

Release v3.25.0 · mapbox/mapbox-gl-js

Breaking changes ⚠️ Switch the ESM entry point to named exports (import * as mapboxgl from 'mapbox-gl/esm') so that modern bundlers can eliminate small unused parts of the code. Replace mapboxgl.a...

GitHub

🚀 QGIS2VectorTiles v3.1 is out!

📍 Supports QGIS point label positions (on/around point).
⚡ Supports QGIS label priority.
🛡️ Validation warnings for invalid expressions.
🎨 Better sprite buffers.
🐞 Bug fixes and stability improvements.

❤️‍🔥 Please rate and boost to support #FOSS
🔗https://gallpeters.github.io/QGIS2VectorTiles/

#opensource #maplibre #vectortile #qgis #gdal #gis #openlayers #geoserver #maptiler #mapbox

Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города

HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по экспоненциальному убыванию расстояния, и в финале — один из 20 архетипов: «Born in Fire», «Plague Walker», «Heir of Enlightenment». Почитать дальше

https://habr.com/ru/articles/1032542/

#nextjs #mapbox #petпроекты #интерактивная_карта #история #tailwind #vercel

Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города

HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по...

Хабр

How do you design a map in Mapbox? Join me on a tale that spans 1600 days and 3300 KMs to design a map of Iceland!

#dataviz #map #iceland #travel #mapbox

https://www.nimitnshah.com/how-i-designed-a-map/

How I Designed a Map

How do you design a map in Mapbox? Join me on a tale that spans 1600 days and 3300 KMs to design a map of Iceland

nimitnshah

Day 85. Have You Ever Seen A City Dancing? 😆🎹

Audio-reactive NYC buildings built from the Mapbox composite source.

The concept is straightforward: feed AudioAnalyser frequency bands into shader uniforms so building motion and color follow the music in real time. It is an experimental sonification study, but the core interaction already reads clearly.

Workflow: Mapbox, Three.js, WebGL, shaders.

#100DayMapChallenge Day 85/100

#ThreeJS #WebGL #Mapbox #Sonification #Geospatial #GIS #3D #Maps

Day 74. Heritage3D Interactive Map 🏛️

Client-delivered interactive monuments map built with Three.js + Mapbox GL JS. Monuments are loaded as glTF assets and explored through guided flyTo navigation (selector, arrows, content sections).

Main technical challenge: keeping custom-layer positioning stable while avoiding visual conflicts with base 3D buildings.

Also, Happy Birthday, Three.js!

#100DayMapChallenge Day 74/100

#ThreeJS #Mapbox #Geospatial #Cartography #3D #Maps #GIS