#MaxZoom
May 9, 2025 at 7:38 PM
a limitation of the renderer (maplibre) is that there is a 1 source : 1 maxzoom relationship, you should use multiple pmtiles archives for that to work correctly

otherwise, you would need to over zoom the lower zoom layer in your tileset (scale all the tiles and store them)
January 29, 2025 at 5:50 PM
For MVT tiles (or any tiles), doing it outside the DB is easier. Something like:

ogr2ogr -f MVT -dsco MINZOOM=1 -dsco MAXZOOM=10 myTileSet PG:dbname=myPGdb tablename

myTileSet is an empty directory. Tablename is your db table. Check the following for all variables:

gdal.org/en/stable/dr...
April 10, 2025 at 6:03 PM
Ren tur. Såg bara något vitt långt långt bort på mossen och körde på maxzoom.
March 9, 2025 at 1:38 PM
Breaking from the dark world, I went out dancing with friends last night. I didn't know how much I needed to feel safe and move my body with others. What a night 🥰

Came home to a mostly full moon! What a delight to look up and enjoy amidst the darkness.

#fullmoon #lunarhalo #livewhilewerealive
February 1, 2026 at 8:38 PM
View vector GeoServer line layer in Leaflet
I have simple line layer created based on shapefiles. It can be viewed in GeoServer with OpenLayers preview: I also can be imported and correctly viewed in QGIS. I tried to visualize this layer over OSM map in my leaflet: var map = L.map('map', ); map.setView([35.6, 25], 8); L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'Map data © OpenStreetMap contributors' }).addTo(map); var WMSe = "http://xx.xxx.xx.xxx:8080/geoserver/wms"; var OHLayer = L.tileLayer.wms(WMSe, { layers: 'fch:OHL-fch', format: 'image/png', transparent: true, format_options: 'layout:message', attribution: "Algum texto de teste", layout: 'message', }).addTo(map) where fch:OHL-fch in name of layer in layer preview in GeoServer. When I run this, all I get is OSM map without line layer. Any help in resolving this is appreciable. Geoserver preview request: http://xx.xxx.xx.xxx:8080/geoserver/fch/wms?service=WMS&version=1.1.0&request=GetMap&layers=fch%3AOHL-fch&bbox=23.6974544525146%2C35.0042533874512%2C26.1459541320801%2C35.4908332824707&width=768&height=330&srs=EPSG%3A4326&styles=&format=application/openlayers leaflet request(NOT working): URL: http://xx.xxx.xx.xxx:8080/geoserver/wms?service=WMS&request=GetMap&layers=%20fch%3AOHL-fch&styles=&format=image%2Fpng&transparent=true&version=1.1.1&format_options=layout%3Amessage&layout=message&height=256&width=256&srs=EPSG%3A3857&bbox=2191602.4749925733,4226661.916057106,2348145.5089206146,4383204.949985149 leaflet request(working): URL: http://xx.xxx.xx.xxy:8080/geoserver/wms?service=WMS&request=GetMap&layers=%20fch%3AOHL-fch&styles=&format=image%2Fpng&transparent=true&version=1.1.1&format_options=layout%3Amessage&layout=message&height=256&width=256&srs=EPSG%3A3857&bbox=2817774.6107047372,3913575.848201024,2974317.644632778,4070118.8821290666 Print of leaflet layer: _container: _crs: {latLngToPoint: function, pointToLatLng: function, project: function, unproject: function, scale: function, …} _events: {remove: Array} _fadeFrame: 163 _globalTileRange: {min: Object, max: Object, extend: function, getCenter: function, getBottomLeft: function, …} _initHooksCalled: true _leaflet_id: 83 _level: {el: , origin: Object, zoom: 8} _levels: {8: Object} _loading: false _map: e {options: Object, _container: , _leaflet_id: 2, _containerId: 3, _fadeAnimated: true, …} _mapToAdd: e {options: Object, _container: , _leaflet_id: 2, _containerId: 3, _fadeAnimated: true, …} _noPrune: false _onMove: function() _tileSize: {x: 256, y: 256, clone: function, add: function, _add: function, …} _tileZoom: 8 _tiles: {145:100:8: Object, 145:101:8: Object, 144:100:8: Object, 146:100:8: Object, 144:101:8: Object, …} _url: "http://xx.xxx.xx.xx:8080/geoserver/wms" _wmsVersion: 1.1 _wrapX: [0, 256] (2) _wrapY: undefined _zoomAnimated: true options: {layers: "fch:OHL-fch", format: "image/png", transparent: true, format_options: "layout:message", attribution: "Algum texto de teste", …} wmsParams: {service: "WMS", request: "GetMap", layers: "fch:OHL-fch", styles: "", format: "image/png", …}
gis.stackexchange.com
July 31, 2026 at 2:08 AM
Get events fired for all objects in a protobuf layer when clicked on in Leaflet.VectorGrid?
I am using Leaflet.VectorGrid to display a Vector Tiles layer that is loaded from pbf tiles from a tile server. Vector Map var map = L.map('map', { maxZoom: 21 }); var tilesurl = "https://example.de/vector/{z}/{x}/{y}.pbf"; var vectorTileStyling = { ... }; // my styling goes here var VectorTileOptions = { rendererFactory: L.canvas.tile, interactive: true, attribution: '© OpenStreetMap contributors, © MapBox', vectorTileLayerStyles: vectorTileStyling, }; var myPbfLayer = L.vectorGrid.protobuf(tilesurl, VectorTileOptions); L.control.layers({ "Vector Layer": myPbfLayer }, {}, {collapsed: false}).addTo(map); myPbfLayer.on('click', function(e) { console.log(e); }); This one vector layer will contain multiple objects, and often theese objects will overlap with each other. I have added an onClick event listener to the vector layer, so that I can react to the user clicking on an element. The problem: The event listener will only trigger for one of the objects (the topmost?), but I would need a way to get all objects that are located at the position that was clicked on. This is an example event that will fire in such a case: {layer: e, propagatedFrom: e, originalEvent: PointerEvent, containerPoint: x, layerPoint: x, …} containerPoint : x {x: 315, y: 309} latlng : M {lat: 51.83847369321496, lng: 11.928371503949167} layer : e {properties: {…}, _parts: Array(1), _initHooksCalled: true, _eventParents: {…}, _renderer: e, …} layerPoint : x {x: 620, y: 284} originalEvent : PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0, …} propagatedFrom : e {properties: {…}, _parts: Array(1), _initHooksCalled: true, _eventParents: {…}, _renderer: e, …} sourceTarget : e {properties: {…}, _parts: Array(1), _initHooksCalled: true, _eventParents: {…}, _renderer: e, …} target : e {_url: '[url removed]', options: {…}, _dataLayerNames: {…}, _initHooksCalled: true, _leaflet_id: 73, …} type : "click" [[Prototype]] : Object Is this at all possible? Is there a way to either make an event fire for all objects under the mouse cursor instead of just the top one, or is there at least some hacky workaround to get all the objects located under the cursor? (presuming the vector pbf tiles are my only source for the objects)
gis.stackexchange.com
July 26, 2026 at 2:08 AM
@jachym @mcepl Looking at the file, it may actually be using tiles for desktop... 🤷‍♂️

{
"items": [
{
"sql": true,
"name": "Mapy.com-outdoor",
"minZoom": 5,
"maxZoom": 19,
"url": "https:\/\/mapserver.mapy.cz\/turist-en\/retina\/{0}-{1}-{2}",
"randoms": "",
"ellipsoid": false,
"inverted_y" […]
Original post on social.vivaldi.net
social.vivaldi.net
May 9, 2025 at 10:50 AM
i tried the same approach as with old map, but my math aint mathing and im stuck because all markers i have are in real-world LonLat equivalent, so it would be pita to change 1000+ things by hand to match pixel-location instead.

current maxzoom is 3, will probably deepen it in the future tho
July 15, 2024 at 4:34 PM
Determine visible area of tilemaplayer
I’m playing around with procedurally generated terrain and the new TileMapLayer in Godot 4. Very nice and easy to generate terrain. I’d like to generate the terrain in the visible area of the Camera2D, regardless of current zoom. My zoom function in Camera2D: public void ZoomCamera(double delta) { Vector2 zoom = Zoom; if (Input.IsActionJustPressed("camera_zoom_in")) { zoom.X = Mathf.Clamp(zoom.X * 1.1f, MinZoom, MaxZoom); zoom.Y = Mathf.Clamp(zoom.Y * 1.1f, MinZoom, MaxZoom); } if (Input.IsActionJustPressed("camera_zoom_out")) { zoom.X = Mathf.Clamp(zoom.X * 0.9f, MinZoom, MaxZoom); zoom.Y = Mathf.Clamp(zoom.Y * 0.9f, MinZoom, MaxZoom); } Zoom = Zoom.Slerp(zoom, (float)(ZoomSpeed * delta)); } I can translate the current mouse position and use that to select any tile: var clickedCell = LocalToMap(GetLocalMousePosition()); SetCell(clickedCell, 0, new Vector2I(6, 0), 0); Now when I try and calculate the viewport bounds and convert to local, its not the same coordinates as the mouse position. public void ReCalculateViewPortBounds() { var viewport = GetViewport(); var camera = viewport.GetCamera2D(); var viewportSize = viewport.GetVisibleRect().Size; var cameraPosition = camera.GlobalPosition; var half_width = (viewportSize.X * Zoom.X) / 2f; var half_height = (viewportSize.Y * Zoom.Y) / 2f; // Define corners var top_left = cameraPosition + (new Vector2(-half_width, -half_height)); var top_right = cameraPosition + (new Vector2(half_width, -half_height)); var bottom_left = cameraPosition + (new Vector2(-half_width, half_height)); var bottom_right = cameraPosition + (new Vector2(half_width, half_height)); // Send event EventBus.Instance.Bus.Publish<CameraEvent>(new CameraEvent { BottomLeft = ToLocal(bottom_left), BottomRight = ToLocal(bottom_right), TopLeft = ToLocal(top_left), TopRight = ToLocal(top_right) }); } Which produces: I’m probably going about this the wrong way so any suggestions/direction appreciated. Essentially, I’m trying to get the same coordinates as if I click the mouse in all four corners of the map at any given zoom level.
forum.godotengine.org
January 5, 2025 at 7:24 PM
What is the most painless way to make a large SVG zoomable and pannable in the browser (ideally with maxZoom and border constraints)?
December 1, 2024 at 10:00 AM