{"id":273618,"date":"2026-03-24T12:18:30","date_gmt":"2026-03-24T12:18:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tour-itinerary-map\/"},"modified":"2026-03-24T12:17:55","modified_gmt":"2026-03-24T12:17:55","slug":"tour-itinerary-map","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/tour-itinerary-map\/","author":20183450,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"trunk","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Tour Itinerary Map","header_author":"Bhautik Parejiya","header_description":"Animated itinerary maps with custom markers for tours.","assets_banners_color":"e7f1fc","last_updated":"2026-03-24 12:17:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bhautikparejiya","date":"2026-03-24 12:24:18"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3490527,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3490543,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[785,125417,2909,10346,249],"plugin_category":[39,49,50],"plugin_contributors":[258521],"plugin_business_model":[],"class_list":["post-273618","plugin","type-plugin","status-publish","hentry","plugin_tags-animation","plugin_tags-itinerary","plugin_tags-map","plugin_tags-route","plugin_tags-travel","plugin_category-business","plugin_category-maps-and-location","plugin_category-media","plugin_contributors-bhautikparejiya","plugin_committers-bhautikparejiya"],"banners":{"banner":"https:\/\/ps.w.org\/tour-itinerary-map\/assets\/banner-772x250.png?rev=3490543","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tour-itinerary-map\/assets\/icon-128x128.png?rev=3490527","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Tour Itinerary Map allows you to display interactive animated routes on maps using MapLibre.\nEasily show tour routes, travel itineraries, and paths with customizable markers, colors, and animation settings.<\/p>\n\n<p>The plugin includes a modern admin dashboard to configure:\n* Map provider and style\n* Start, end, waypoint, and moving markers\n* Route colors and default marker colors\n* Animation speed, looping, and auto-start behavior<\/p>\n\n<p>Perfect for travel websites, tour operators, bloggers, and itinerary-based content.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following external services:<\/p>\n\n<h4>Stadia Maps<\/h4>\n\n<p>The plugin uses Stadia Maps to load map tile styles (visual appearance of the map). When a visitor views a page containing the map shortcode, their browser connects to Stadia Maps servers to download the map style and tile data.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> The visitor's IP address (standard HTTP request), the selected map style name, and an optional API key if configured in the plugin settings.<\/li>\n<li><strong>When it is sent:<\/strong> Every time a page containing the [tour_itinerary_map] shortcode is loaded in a visitor's browser.<\/li>\n<li><strong>Service provider:<\/strong> Stadia Maps<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/stadiamaps.com\/terms-of-service\/<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/stadiamaps.com\/privacy-policy\/<\/li>\n<\/ul>\n\n<h4>MapLibre GL JS (Bundled Library)<\/h4>\n\n<p>This plugin bundles MapLibre GL JS, an open-source JavaScript library for rendering interactive maps. MapLibre itself does not transmit any data to external servers \u2014 all rendering is done client-side in the visitor's browser.<\/p>\n\n<ul>\n<li><strong>Source code:<\/strong> https:\/\/github.com\/maplibre\/maplibre-gl-js<\/li>\n<li><strong>License:<\/strong> BSD 3-Clause License<\/li>\n<\/ul>\n\n<h4>Turf.js (Bundled Library)<\/h4>\n\n<p>This plugin bundles Turf.js, an open-source geospatial analysis library used for route animation calculations (smoothing, interpolation). Turf.js does not communicate with any external server; all processing is done client-side.<\/p>\n\n<ul>\n<li><strong>Source code:<\/strong> https:\/\/github.com\/Turfjs\/turf<\/li>\n<li><strong>License:<\/strong> MIT License<\/li>\n<\/ul>\n\n<h4>Lucide Icons v0.577.0 (Bundled Library)<\/h4>\n\n<p>This plugin bundles Lucide, an open-source icon library used in the admin interface. Lucide does not communicate with any external server.<\/p>\n\n<ul>\n<li><strong>Source code:<\/strong> https:\/\/github.com\/lucide-icons\/lucide<\/li>\n<li><strong>License:<\/strong> ISC License<\/li>\n<\/ul>\n\n<h3>Source Code &amp; Build Tools<\/h3>\n\n<p>The following files included in this plugin are compiled or minified builds of third-party open-source libraries. The original human-readable source code for each is publicly available at the links provided above in the External Services section.<\/p>\n\n<ul>\n<li>assets\/js\/maplibre-gl.js \u2014 MapLibre GL JS (https:\/\/github.com\/maplibre\/maplibre-gl-js)<\/li>\n<li>assets\/css\/maplibre-gl.css \u2014 MapLibre GL JS (https:\/\/github.com\/maplibre\/maplibre-gl-js)<\/li>\n<li>assets\/js\/turf.js \u2014 Turf.js (https:\/\/github.com\/Turfjs\/turf)<\/li>\n<li>admin\/assets\/lucide.js \u2014 Lucide v0.577.0 (https:\/\/github.com\/lucide-icons\/lucide)<\/li>\n<\/ul>\n\n<p>All other JavaScript and CSS files in this plugin are unminified, human-readable source files authored specifically for this plugin:<\/p>\n\n<ul>\n<li>public\/js\/touritma-map.js \u2014 Frontend map initialisation logic<\/li>\n<li>public\/js\/metabox.js \u2014 Admin metabox interactions<\/li>\n<li>public\/js\/metabox.css \u2014 Admin metabox styles<\/li>\n<li>admin\/assets\/settings.js \u2014 Admin settings page interactions<\/li>\n<li>admin\/assets\/settings.css \u2014 Admin settings page styles<\/li>\n<li>assets\/css\/map.css \u2014 Frontend map styles<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tour-itinerary-map<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Itinerary Map<\/strong> in the WordPress admin menu to configure settings.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Updated Lucide icon library to v0.577.0<\/li>\n<li>Moved all inline JavaScript and CSS to properly enqueued external files<\/li>\n<li>Renamed all function\/option\/constant prefixes from \"tim\" to \"touritma\" (\u22654 chars, per WP guidelines)<\/li>\n<li>Improved data sanitization and validation on metabox save (wp_unslash + per-field sanitize_text_field + numeric range validation)<\/li>\n<li>Added External Services disclosure to readme<\/li>\n<li>Added Source Code documentation links to readme<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Interactive map rendering using MapLibre<\/li>\n<li>Custom markers with image and color fallback support<\/li>\n<li>Route animation with speed and loop controls<\/li>\n<li>Modern admin settings dashboard<\/li>\n<\/ul>","raw_excerpt":"Display interactive animated tour routes with MapLibre, with customizable markers, colors, and animation controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/273618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=273618"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bhautikparejiya"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=273618"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=273618"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=273618"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=273618"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=273618"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=273618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}