[{"data":1,"prerenderedAt":132},["ShallowReactive",2],{"blog-\u002Fblog\u002Fannouncing-version-2-of-official-sdks\u002F":3,"related-blog-\u002Fblog\u002Fannouncing-version-2-of-official-sdks\u002F":98},{"id":4,"title":5,"abstract":6,"author":6,"body":7,"description":82,"excerpt":6,"extension":83,"head":6,"image":6,"keywords":84,"meta":90,"modified":6,"navigation":91,"path":92,"proficiencyLevel":6,"published":93,"rawbody":94,"schemaOrg":6,"schemaType":6,"seo":95,"stem":96,"__hash__":97},"blog\u002Fblog\u002Fannouncing-version-2-of official-sdks.md","Announcing Version 2 of our Official SDKs",null,{"type":8,"value":9,"toc":78},"minimark",[10,14,18,21,43,46],[11,12,5],"h1",{"id":13},"announcing-version-2-of-our-official-sdks",[15,16,17],"p",{},"Today marks a new milestone in the lifecycle of the Stadia Maps official SDKs.\nWe have just released version 2.0.0 of our API client libraries\nfor the web, mobile and backend.\nWith official clients in TypeScript, Swift, Kotlin, and Python,\nwe've already helped thousands of developers get started in just a few lines of code.",[15,19,20],{},"This release includes a number of improvements:",[22,23,24,28,31,40],"ul",{},[25,26,27],"li",{},"A factor for adjusting the cost of alleys when doing automobile routing",[25,29,30],{},"A resample distance parameter for elevation requests, which makes it even easier to get elevation profiles; just give us a simple set of points and we'll interpolate the rest!",[25,32,33,34,39],{},"Support for requesting one or more alternate routes (great for ",[35,36,38],"a",{"href":37},"\u002Fproducts\u002Frouting-navigation","navigation applications",")",[25,41,42],{},"Additional options to ignore restrictions (particularly useful during map matching when you just want to know which roads a vehicle traversed)",[15,44,45],{},"If you're using one of our existing libraries already,\nit will generally keep on working as-is.\nHowever, in order to make a few of the improvements,\nwe had to introduce backwards-incompatible changes,\nwhich is why it gets a major version bump.\nFor migration instructions, refer to the release notes lined below:",[22,47,48,57,64,71],{},[25,49,50],{},[35,51,56],{"href":52,"rel":53,"target":55},"https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-ts\u002Freleases\u002Ftag\u002Fv2.0.0",[54],"external","_blank","TypeScript",[25,58,59],{},[35,60,63],{"href":61,"rel":62,"target":55},"https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-swift\u002Freleases\u002Ftag\u002F2.0.0",[54],"Swift",[25,65,66],{},[35,67,70],{"href":68,"rel":69,"target":55},"https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-kotlin\u002Freleases\u002Ftag\u002Fv2.0.0",[54],"Kotlin",[25,72,73],{},[35,74,77],{"href":75,"rel":76,"target":55},"https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-py\u002Freleases\u002Ftag\u002Fv2.0.0",[54],"Python",{"title":79,"searchDepth":80,"depth":80,"links":81},"",4,[],"We've added new routing and elevation API features in our latest SDK releases.","md",[85,86,87,88,89],"SDK","API Client","Routing","Elevation","Release",{},true,"\u002Fblog\u002Fannouncing-version-2-of-official-sdks","2024-03-20","---\ndescription: \"We've added new routing and elevation API features in our latest SDK releases.\"\npublished: 2024-03-20\nkeywords:\n  - SDK\n  - API Client\n  - Routing\n  - Elevation\n  - Release\n---\n\n# Announcing Version 2 of our Official SDKs\n\nToday marks a new milestone in the lifecycle of the Stadia Maps official SDKs.\nWe have just released version 2.0.0 of our API client libraries\nfor the web, mobile and backend.\nWith official clients in TypeScript, Swift, Kotlin, and Python,\nwe've already helped thousands of developers get started in just a few lines of code.\n\nThis release includes a number of improvements:\n\n* A factor for adjusting the cost of alleys when doing automobile routing\n* A resample distance parameter for elevation requests, which makes it even easier to get elevation profiles; just give us a simple set of points and we'll interpolate the rest!\n* Support for requesting one or more alternate routes (great for [navigation applications](\u002Fproducts\u002Frouting-navigation))\n* Additional options to ignore restrictions (particularly useful during map matching when you just want to know which roads a vehicle traversed)\n\nIf you're using one of our existing libraries already,\nit will generally keep on working as-is.\nHowever, in order to make a few of the improvements,\nwe had to introduce backwards-incompatible changes,\nwhich is why it gets a major version bump.\nFor migration instructions, refer to the release notes lined below:\n\n* [TypeScript](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-ts\u002Freleases\u002Ftag\u002Fv2.0.0)\n* [Swift](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-swift\u002Freleases\u002Ftag\u002F2.0.0)\n* [Kotlin](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-kotlin\u002Freleases\u002Ftag\u002Fv2.0.0)\n* [Python](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-py\u002Freleases\u002Ftag\u002Fv2.0.0)\n",{"title":5,"description":82},"blog\u002Fannouncing-version-2-of official-sdks","FrANzsGEBBa5_czuy10G_E5nuzEIKQECpfP5d_Wqdys",[99,109,122],{"title":100,"description":101,"path":102,"published":103,"keywords":104,"rawbody":108},"Official SDK for PHP is Now Available","We're making it easier to access geocoding, routing, elevation, and time zone APIs in PHP.","\u002Fblog\u002Fnew-sdk-php","2024-07-26",[105,106,86,107,87],"PHP SDK","Backend Development","Geocoding","---\ndescription: \"We're making it easier to access geocoding, routing, elevation, and time zone APIs in PHP.\"\npublished: \"2024-07-26\"\nkeywords:\n  - PHP SDK\n  - Backend Development\n  - API Client\n  - Geocoding\n  - Routing\n---\n\n# Official SDK for PHP is Now Available\n\nToday we are happy to announce the initial release of our [PHP SDK](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fphp\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\nThis SDK makes it easier than ever to access geocoding, routing, elevation,\nand time zone information in PHP.\n\n## Improving the Developer Experience\n\nBefore today, PHP developers accessed the Stadia Maps APIs\nusing an HTTP library (such as cURL) and some JSON processing code.\nWhile our APIs are easy to integrate with using standard HTTP libraries,\nthere are several reasons to use one of our SDKs:\n\n* Less code to maintain—our SDKs handle the API integration for you!\n* Discover the API through autocomplete and documentation without leaving your IDE.\n* Immediately discover and use new features with a package updates. We're always improving our APIs, and we keep the SDKs in sync.\n\n## Our Seventh SDK\n\nWe're always speaking with users,\nso when the need of a PHP SDK came up a few times,\nwe saw an opportunity to make development easier.\nThanks to our existing [OpenAPI spec](https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }\nand experience packaging for other languages,\nwe published the first release in less than a day!\n\nThe PHP SDK is our seventh official SDK,\nand complements our existing API clients for TypeScript, Python, Kotlin, and Swift.\nNow, if you're counting carefully, you may have noticed that we only mentioned five.\nThat's because we also have an [autocomplete search plugin for MapLibre GL JS](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fmaplibre-gl-js-autocomplete-search-plugin\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" },\nand a [mobile turn-by-turn navigation SDK](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\nYou can learn more about all of our SDKs at [docs.stadiamaps.com](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\n\n## We Want Your Feedback\n\nAre you a PHP developer?\nWe'd love to hear your thoughts on the new SDK!\nLet us know how you're using it, and how we can make it better.\nYour feedback helps us continuously improve the SDKs.\n\n## Where to Get It\n\nDo you use Composer?\nWe've hosted the package on [Packagist](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fstadiamaps\u002Fapi){ target=\"_blank\" }\nfor easy installation with `composer install`. \nAnd if you'd prefer to just download the files directly,\nyou can do that too!\nLike all of our SDKs, it's completely open-source,\nand you can find the code and installation instructions\non [GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-php){ target=\"_blank\" }.\n\n## Learn More & Next Steps\n\n- Read our [SDK documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" } for installation instructions and example code.\n- [Create an account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F?utm_source=marketing_site&utm_medium=blog&utm_campaign=php_sdk_launch&utm_content=php_sdk_announcement) to get an API key. Start building today without a credit card!\n- Join our community on [Slack](https:\u002F\u002Fslack.openstreetmap.us\u002F) or [Discord](https:\u002F\u002Fdiscord.gg\u002FqRBy6qqtdT), follow us\n  on [Mastodon](https:\u002F\u002Fen.osm.town\u002F@stadiamaps), [Twitter](https:\u002F\u002Ftwitter.com\u002F@stadiamaps), or\n  [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F), or sign-up for our [mailing list](https:\u002F\u002Feepurl.com\u002Fgs51fD)!\n\n",{"title":110,"description":111,"path":112,"published":113,"keywords":114,"rawbody":121},"Why Basic OpenStreetMap Routing Needs Real-Time Traffic","OpenStreetMap is a world-class road network, but without real-time traffic it's a static dataset. Here's why algorithmic ETAs fall apart in production logistics and how Stadia Maps closes the gap with TomTom-powered routing.","\u002Fblog\u002Fwhy-osm-routing-needs-real-time-traffic","2026-05-12",[87,115,116,117,118,119,120],"Navigation","OpenStreetMap","Traffic Data","Matrix Routing","Logistics","TomTom","---\ndescription: >-\n  OpenStreetMap is a world-class road network, but without real-time traffic\n  it's a static dataset. Here's why algorithmic ETAs fall apart in production\n  logistics and how Stadia Maps closes the gap with TomTom-powered routing.\nexcerpt: >-\n  OpenStreetMap is great geography, but without real-time traffic it falls\n  short on ETAs. Stadia Maps closes the gap with TomTom-powered routing.\npublished: \"2026-05-12\"\nkeywords:\n  - Routing\n  - Navigation\n  - OpenStreetMap\n  - Traffic Data\n  - Matrix Routing\n  - Logistics\n  - TomTom\nauthor:\n  name: \"Ian Wagner\"\n  jobTitle: \"Founder & President \u002F COO\"\n  sameAs:\n    - \"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fian-w-wagner\u002F\"\n---\n\n# Why Basic OpenStreetMap Routing Needs Real-Time Traffic\n\n> OpenStreetMap (OSM) provides a world-class geographic foundation, but it remains a static dataset. Without real-time traffic integration, routing engines must rely on algorithmic proxies—like road class and legal speed limits—which often lead to unreliable ETAs and logistics bottlenecks.\n\n## The Problem\n\n[OpenStreetMap (OSM)](https:\u002F\u002Fwww.openstreetmap.org\u002Fabout) is one of the world's leading road maps, but a persistent gap remains between fixed geographic data and a [live navigation experience](\u002Fproducts\u002Frouting-navigation\u002F). Without dedicated traffic data, Estimated Times of Arrival (ETAs) are essentially educated guesses. While OSM is excellent at mapping the world's road network, a static dataset cannot capture the actual driving conditions at this exact moment. In enterprise-grade logistics, the lack of live data is often the first significant technical hurdle.\n\n## The Limits of Algorithmic Guesswork\n\nIn the absence of real-time data, a routing engine must estimate travel speeds based on tags and a few common proxies:\n\n- **Road Class:** Assuming a motorway is always faster than a residential street.\n- **Tagged Speed Limits:** Using the legal maximum as the baseline (when the tag even exists).\n- **Network Density:** Adjusting for urban vs. rural environments.\n- **Time of Day:** Using low-granularity buckets like \"daytime\" and \"nighttime.\"\n\nReal-world data show wild variances compared to these static estimates. Road class is a blunt instrument for predicting speed. Missing speed limit tags in open datasets force routing engines to rely on broad averages, resulting in unreliable ETAs and logistics delays. Rule-based algorithms are also notoriously bad at predicting choke points because open datasets don't account for traffic light timings, congestion near specific exits, or the \"invisible\" friction of a busy intersection.\n\n## The Stadia Maps Difference\n\nTo move from guesswork to precision, we integrated [TomTom's global traffic data](https:\u002F\u002Fwww.tomtom.com\u002Fproducts\u002Ftraffic-apis\u002F) directly into the [Stadia Maps routing engine](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F). High-resolution historical profiles and live feeds allow for accurate, real-time routing. We provide this through three key technical pillars:\n\n1. **Global Coverage:** Access to consistent data across more countries than almost any other vendor.\n2. **Rapid Updates:** A traffic latency of approximately two minutes allows our API to suggest alternate routes almost as soon as a wreck occurs.\n3. **Historical Profiles:** Deep granularity forms the backbone of predictive routing. High-resolution historical data enables accurate, time-dependent routing in advance, allowing you to plan a route for Tuesday at 8:00 AM based on what might happen on Tuesdays at 8:00 AM.\n\n## Fleet Intelligence at Scale\n\nFor dispatch, optimization, and fleet operations, [matrix routing](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Ftime-distance-matrix\u002F) (calculating the time and distance between many origins and destinations) is the engine's most critical function.\n\nThe Stadia Maps infrastructure supports matrix requests that are significantly larger than most competitors allow on standard plans. By integrating traffic data directly into these large-scale requests, we eliminate the need for developers to split requests into smaller chunks, reducing unnecessary complexity and latency.\n\nDevelopers maintain full agency over their implementation. We provide the fastest route based on live conditions, but the frequency of re-routing remains entirely in your control. Choice of revalidation frequency puts you in charge of the trade-off between real-time accuracy and [scaling costs](\u002Fpricing\u002F), ensuring your bills remain as predictable as your ETAs.\n\n---\n\n[Create a free account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F) to start building with real-time traffic and high-performance routing today. Our [documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F) provides everything you need to integrate TomTom-powered precision into your existing OSM workflow.\n",{"title":123,"description":124,"path":125,"published":126,"keywords":127,"rawbody":131},"Three New SDKs and MapLibre GL JS Search Plugin Are Now Available","New JavaScript, Python, and Kotlin SDKs, along with a MapLibre GL JS Search Plugin, are now available.","\u002Fblog\u002Fnew-sdks-and-maplibre-plugin","2023-07-04",[85,128,77,70,129,130],"JavaScript","MapLibre","Search Plugin","---\ndescription: \"New JavaScript, Python, and Kotlin SDKs, along with a MapLibre GL JS Search Plugin, are now available.\"\npublished: \"2023-07-04\"\nkeywords:\n  - SDK\n  - JavaScript\n  - Python\n  - Kotlin\n  - MapLibre\n  - Search Plugin\n---\n\n# Three New SDKs and MapLibre GL JS Search Plugin Are Now Available\n\nToday we are excited to announce the initial release of three SDKs ([JavaScript\u002FTypeScript](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fjavascript-typescript\u002F),\n[Python](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fpython\u002F), and [Kotlin](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fkotlin-jvm\u002F)), along\nwith a [MapLibre GL JS search box plugin](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@stadiamaps\u002Fmaplibre-search-box) for Stadia\nMaps services.\n\n## We've Listened and Delivered\n\nThese four projects round out our support for a large portion of our existing user base, including all browser-based\napps and many popular backend use cases too.\n\n## Why Use the SDKs?\n\nOf course you could write your code to directly interface with our APIs, but there are several benefits to taking\nadvantage of our SDKs:\n\n* Save time; no need to write your own API code since you have access to the full range of Stadia Maps geospatial APIs\n* Easily install via your favorite package manager\n* Faster access to documentation in your IDE with autocomplete\n* Always utilize the latest features because when we release a new API, we'll release an updated SDK\n\n## MapLibre GL JS Search Box Plugin\n\nOur MapLibre GL JS plugin builds off of our JavaScript SDK and this plugin makes it easy and straightforward to add an\nautocomplete search box to your maps with just a few lines of code, all while leveraging best practices (debouncing of\nrequests, caching of previous results, and navigating to the chosen result) for the autocomplete search API!\n\nNow you can easily implement an address auto-fill form for your e-Commerce application, saving your customers time and\nheadaches on the backend due to bad input data.\n\nYou can also use autocomplete to find:\n\n* Points of interest such as major landmarks, airports, campuses, etc.\n* Administrative areas (e.g. neighborhoods, cities, states, countries, etc.)\n* Postal codes\n* And more...\n\n## We Want Your Feedback\n\nSince these are the initial versions of each SDK and plugin, we are looking for feedback from the community on updates,\nfeatures, and improvements that we can incorporate into upcoming releases.\n\n## Where to Find\n\nYou can find the releases, and their source code, in the usual places:\n\n* JavaScript SDK: [npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@stadiamaps\u002Fapi) |\n[GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-ts)\n* Python SDK: [PyPi](https:\u002F\u002Fpypi.org\u002Fproject\u002Fstadiamaps\u002F) | [GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-py)\n* Kotlin SDK: [GitHub Packages](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-kotlin\u002Fpackages\u002F1887775) |\n[GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-kotlin)\n* MapLibre GL JS Plugin: [npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@stadiamaps\u002Fmaplibre-search-box) |\n[GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fmaplibre-search-box)\n\n## Learn More & Next Steps\n\n- Read documentation about our [SDKs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F) and Plugins on our docs site.\n- [Create an account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F?utm_source=marketing_site&utm_medium=blog&utm_campaign=sdk_launch&utm_content=maplibre_plugin_announcement) to start building today!\n- Join our community on [Slack](https:\u002F\u002Fslack.openstreetmap.us\u002F) or [Discord](https:\u002F\u002Fdiscord.gg\u002FqRBy6qqtdT), follow us\non [Mastodon](https:\u002F\u002Fen.osm.town\u002F@stadiamaps), [Twitter](https:\u002F\u002Ftwitter.com\u002F@stadiamaps), or\n[LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F), or sign-up for our [mailing list](https:\u002F\u002Feepurl.com\u002Fgs51fD)!",1778676026065]