Revision history for HTML-OSM
0.11 Mon Oct 19 09:48:31 PM EDT 2026
[ Bug Fixes ]
- Heatmap radius and blur are now forced to positive numbers, so they can
no longer inject JavaScript
- onload_render() checks zoom, width and height again (values from a
config file or a clone skip new()'s checks) and falls back to the
defaults with a warning
- CDN URLs are HTML-escaped in the <head> fragment
- A lone carriage return in a label no longer breaks the JavaScript
- add_marker('') and center('') return 0 instead of croaking from a
private helper; a coordinate with no lat/lon and no address is skipped
- A user agent passed in by the caller is no longer reconfigured
- Some perls (seen with 5.38.0 on macOS) print and read numbers with the
locale's decimal point, so under de_DE 51.5074 printed as "51,5074" and
"51.5074" was read as 51. Coordinates were rejected, and the computed
map centre lost its fractions. Coordinates are now always written with
a '.', converted to numbers without the locale, and range-checked
correctly ("90.5" was read as 90 and accepted). JSON layers are
encoded under the C numeric locale, and heatmap radius/blur accept
decimals such as "12.5"
Fixes https://matrix.perl-magpie.org/results/97965e64-9dc9-11f1-963c-fccfcb508d96
[ Enhancements ]
- new(tile_url => ...) replaces the OpenStreetMap tile layer, so maps can
use an internal tile server or run on an air-gapped network
- new(tile_attribution => ...) replaces the map credit; the default now
links to the OpenStreetMap copyright page
- new(email => ...) adds a contact address to Nominatim requests, as the
Nominatim usage policy asks
[ Documentation ]
- Add a DESCRIPTION section
- MESSAGES tables now match the exact croak text and list the warnings
- Document that only one map can be rendered per page
[ Build ]
- Declare IPC::System::Simple as a runtime prerequisite: autodie qw(:all)
needs it when the module loads
- Set MIN_PERL_VERSION to 5.010
- Remove ExtUtils::MakeMaker from PREREQ_PM (it stays in CONFIGURE_REQUIRES)
- Declare HTTP::Response for tests; drop unused Test::JSON,
Test::HTML::Lint and Test::Warnings
[ Tests ]
- Cover the default tile URL, a configured tile URL and JS-string escaping
- Cover tile_attribution, email, the render-time checks and the new
escaping helpers
- Simulate comma-decimal number printing so the locale fix is tested on
every platform, and check the rendered output under real locales
0.10 Sun Jul 12 21:23:33 EDT 2026
[ Bug Fixes ]
- Don't try to call a method on an uninitialized variable
- Use consistent default sizes
- Bump minimum versions
- Set maximum zoom to 19
- Fix function-style HTML::OSM::new() with arguments blessing into wrong package
[ Enhancements ]
- Re-enable search box and reset button in rendered map
- Add "Clear search markers" button to remove dynamically-added markers
- add_geojson(): render GeoJSON layers via Leaflet-native L.geoJSON()
- add_heatmap(): render heatmap layers via Leaflet.heat plugin
- add_gpx(): render GPX tracks from a URL via leaflet-gpx plugin
- add_choropleth(): data-driven colour-fill layers; colours pre-computed in Perl
- new(cluster=>1): group markers with Leaflet.markercluster plugin
- onload_render() no longer requires point markers when GeoJSON/heatmap/GPX/choropleth data is present
- Use Params::Validate::Strict on new()
- Added the test dashboard at https://nigelhorne.github.io/HTML-OSM/coverage/
[ Tests ]
- Started fuzz testing
- Extend new() fuzz schema with zoom, height, width and min_interval inputs
0.09 Thu Jul 31 11:15:55 EDT 2025
Remove unused module: File::Slurp
Use Params::Get, Object::Configure
Don't test URLs on smokers
0.08 Wed Apr 2 07:51:24 EDT 2025
Added css_url and js_url arguments to new()
Default Leaflet bumped from 1.7.1 to 1.9.4
Added config_file argument to new()
0.07 Fri Feb 28 15:07:03 EST 2025
Center() was being ignored
Changed default zoom to 12
0.06 Wed Feb 19 08:20:29 EST 2025
Remove unwanted <head> and <title> information
0.05 Mon Feb 17 20:24:18 EST 2025
More compatiblity with Geo::Coder::* modules
Allow coordinates to start with a decimal point, e.g. "-.516667"
Changed the default zoom to 17
0.04 Mon Feb 17 14:32:21 EST 2025
Allow center() to be given a location string
0.03 Sun Feb 16 21:36:35 EST 2025
Change the default size to be the same as HTML::GoogleMaps::V3
Improved handling when an ARRAY is returned by Nominatim
Remove the search and reset buttons
Use %20 rather than ' ' in the URL
0.02 Sun Feb 16 14:44:32 EST 2025
Added rate-limiting and caching support
0.01 Sun Feb 16 12:46:54 EST 2025
First draft
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)