The map component
Visualize SQL data on a map.
The map component displays a custom interactive map with markers on it.
Useful in combination with PostgreSQL's PostGIS or SQLite's spatialite, to create custom visualizations of your geospatial data.
The map component is also compatible with non-geospatial databases,
by manually setting the latitude
and longitude
parameters.
Example Use Cases
- Store Locator: Build an interactive map to find the nearest store information using SQL-stored geospatial data.
- Delivery Route Optimization: Visualize the results of delivery route optimization algorithms.
- Sales Heatmap: Identify high-performing regions by mapping sales data stored in SQL.
- Real-Time Tracking: Create dynamic dashboards that track vehicles, assets, or users live using PostGIS or MS SQL Server geospatial time series data.
- Demographic Insights: Map customer demographics or trends geographically to uncover opportunities for growth or better decision-making.
Introduced in SQLPage v0.8.0.
Top-level parameters
name | required | type | description |
---|---|---|---|
attribution | HTML |
Text to display at the bottom right of the map. Defaults to "© OpenStreetMap". | |
class | TEXT |
class attribute added to the container in HTML. It can be used to apply custom styling to this item through css. Added in v0.18.0. | |
id | TEXT |
id attribute added to the container in HTML. It can be used to target this item through css or for scrolling to this item through links (use "#id" in link url). | |
latitude | REAL |
Latitude of the center of the map. If omitted, the map will be centered on its markers. | |
longitude | REAL |
Longitude of the center of the map. | |
max_zoom | INTEGER |
How far the map can be zoomed in. Defaults to 18. Added in v0.15.2. | |
tile_source | URL |
Custom map tile images to use, as a URL. Defaults to "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png". Added in v0.15.2. | |
zoom | REAL |
Zoom Level to apply to the map. Defaults to 5. |
Row-level parameters
name | required | type | description |
---|---|---|---|
latitude | REQUIRED | REAL |
Latitude of the marker. Required only if geojson is not set. |
longitude | REQUIRED | REAL |
Longitude of the marker. Required only if geojson is not set. |
color | Background color of the marker on the map. Requires "icon" to be set. | ||
description | TEXT |
Plain text description of the marker, to be displayed in a tooltip when the marker is clicked. | |
description_md | TEXT |
Description of the marker, in markdown, rendered in a tooltip when the marker is clicked. | |
geojson | JSON |
A GeoJSON geometry (line, polygon, ...) to display on the map. Can be styled using geojson properties using the name of leaflet path options. Introduced in 0.15.1. Accepts raw strings in addition to JSON objects since 0.15.2. | |
icon | Name of the icon to use for the marker | ||
link | TEXT |
A link to associate to the marker's title. If set, the marker tooltip's title will be clickable and will open the link. | |
size | INTEGER |
Size of the marker icon. Requires "icon" to be set. Introduced in 0.15.2. | |
title | TEXT |
Title of the marker, displayed on hover and in the tooltip when the marker is clicked. |
Example 1
Adding a marker to a map
Showing how to place a marker on a map. Useful for basic location displays like showing a single office location, event venue, or point of interest. The marker shows basic hover and click interactions.
select
'map' as component;
select
'New Delhi' as title,
28.6139 as latitude,
77.209 as longitude;
Result
New Delhi
Example 2
Advanced map customization using GeoJSON and custom map tiles
This example demonstrates using topographic map tiles, custom marker styling, and clickable markers that link to external content - perfect for educational or tourism applications.
It uses GeoJSON to display polygons and lines.
- You can generate GeoJSON data from PostGIS geometries using the
ST_AsGeoJSON
function. - In spatialite, you can use the
AsGeoJSON
function. - In MySQL, you can use the
ST_AsGeoJSON()
function.
select
'map' as component,
5 as zoom,
8 as max_zoom,
600 as height,
-25 as latitude,
28 as longitude,
'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png' as tile_source,
'' as attribution;
select
'peace' as icon,
20 as size,
'https://en.wikipedia.org/wiki/Nelson_Mandela' as link,
'{"type":"Feature", "properties": { "title":"Mvezo, Birth Place of Nelson Mandela" }, "geometry": { "type":"Point", "coordinates": [28.49, -31.96] }}' as geojson;
Result
Example 3
Maps with links and rich descriptions
Demonstrates how to create an engaging map with custom icons, colors, rich descriptions with markdown support, and connecting points with lines. Perfect for visualizing multi-dimensional relationships between points on a map, like routes between locations.
select
'map' as component,
'Paris' as title,
11 as zoom,
48.85 as latitude,
2.34 as longitude;
select
'Notre Dame' as title,
'building-castle' as icon,
'indigo' as color,
48.853 as latitude,
2.3498 as longitude,
'A beautiful cathedral.' as description_md,
'https://en.wikipedia.org/wiki/Notre-Dame_de_Paris' as link;
select
'Eiffel Tower' as title,
'tower' as icon,
'yellow' as color,
48.8584 as latitude,
2.2945 as longitude,
'A tall tower. [Wikipedia](https://en.wikipedia.org/wiki/Eiffel_Tower)' as description_md;
select
'Tower to Cathedral' as title,
JSON('{"type":"LineString","coordinates":[[2.2945,48.8584],[2.3498,48.8530]]}') as geojson,
'teal' as color,
'A nice 45 minutes walk.' as description;
Result
Paris
Notre Dame
A beautiful cathedral.
Eiffel Tower
A tall tower. Wikipedia
Tower to Cathedral
A nice 45 minutes walk.
Example 4
Abstract geometric visualizations
Example showing how to create abstract geometric visualizations without a base map. Useful for displaying spatial data that doesn't need geographic context, like floor plans, seating charts, or abstract 2D data visualizations.
select
'map' as component,
FALSE as tile_source;
select
'MySQL' as title,
'red' as color,
'The litteral red square' as description,
JSON('{"type":"Polygon","coordinates":[[[0,0],[0,4],[4,4],[4,0],[0,0]]]}') as geojson;
select
'SQLite' as title,
'blue' as color,
'This 2D shape was generated by a SQL query.' as description,
JSON('{"type":"Polygon","coordinates":[[[5,0],[9,0],[7,4],[5,0]]]}') as geojson;
Result
MySQL
The litteral red square
SQLite
This 2D shape was generated by a SQL query.