<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: TomTom Devs</title>
    <description>The latest articles on Forem by TomTom Devs (@tomtomdevs).</description>
    <link>https://forem.com/tomtomdevs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F954%2F10ea8e3e-9c69-428e-b409-4e380d1f0ca2.png</url>
      <title>Forem: TomTom Devs</title>
      <link>https://forem.com/tomtomdevs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tomtomdevs"/>
    <language>en</language>
    <item>
      <title>Top 10 Blogs of 2021 to Help You Build Your Location-Based App</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Tue, 28 Dec 2021 23:44:08 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/top-10-blogs-of-2021-to-help-you-build-your-location-based-app-58np</link>
      <guid>https://forem.com/tomtomdevs/top-10-blogs-of-2021-to-help-you-build-your-location-based-app-58np</guid>
      <description>&lt;p&gt;For the entire world, a lot of things changed in 2020 – including the way we move. 2021 proved to be not much different, with on-demand delivery soaring and the need for maps with real-time updates persisted.&lt;/p&gt;

&lt;p&gt;This year, our community of readers at &lt;a href="https://developer.tomtom.com"&gt;TomTom Developers&lt;/a&gt; favored product announcements and more tutorial-based blogs to add map data to their apps. Here’s a peek of what you loved reading this year. &lt;/p&gt;

&lt;h3&gt;
  
  
  10. &lt;a href="https://developer.tomtom.com/blog/spotlight/announcing-snap-roads-api-public-preview"&gt;ANNOUNCING SNAP TO ROADS API IN PUBLIC PREVIEW&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In November, we announced that our Snap to Roads API entered public preview, meaning users can try out this new functionality for reconstructing routes from trace points. This new API  supports a variety of use cases which analyze past routes and movements, both in the track and trace domain, but in on-demand route optimization as well. &lt;/p&gt;

&lt;p&gt;Learn more about the Snap to Roads API, what information the API returns, how it works, and some tips and uses on using it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/announcing-snap-roads-api-public-preview"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T-kwKxMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rptutwj3uqa9yyur5ouq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T-kwKxMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rptutwj3uqa9yyur5ouq.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  9. &lt;a href="https://developer.tomtom.com/blog/build-different/how-use-isochrones-food-delivery"&gt;HOW TO USE ISOCHRONES FOR FOOD DELIVERY&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Isochrones are lines drawn on a map connecting points at which something occurs or arrives at the same time. The isochrones depict the location from which someone can travel to another location within a certain amount of time and with a certain cost, such as kilowatts for electrical vehicles and fuel for combustion engine vehicles.&lt;/p&gt;

&lt;p&gt;In this article, we explore isochrones and how to use them in food delivery applications, regardless of language or framework.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/how-use-isochrones-food-delivery"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J3vhFGuP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dcckr34rx12usonjsys.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J3vhFGuP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dcckr34rx12usonjsys.jpg" alt="Image description" width="640" height="387"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  8. &lt;a href="https://developer.tomtom.com/blog/build-different/build-traffic-alert-dashboard-tomtom-traffic-api"&gt;BUILD A TRAFFIC ALERT DASHBOARD WITH THE TOMTOM TRAFFIC API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The TomTom Traffic API provides a real-time endpoint for traffic-related incidents and traffic flow anywhere in the world. You can toggle it on or off simply by setting the respective stylesVisibility in any map instance to true or false.&lt;/p&gt;

&lt;p&gt;To illustrate the power and ease-of-use of TomTom’s real-time traffic services, we created a seed project for a radio news service’s traffic dashboard. It lists traffic incidents and flow of any place on Earth, with real-time updates, and illustrates this on a map so commuters know what to expect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/build-traffic-alert-dashboard-tomtom-traffic-api"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LqkYCsNf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xrikge2g1le979qi9p0v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LqkYCsNf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xrikge2g1le979qi9p0v.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;a href="https://developer.tomtom.com/blog/build-different/creating-map-tomtom-map-styler-step-step"&gt;CREATING A MAP WITH THE TOMTOM MAP STYLER: STEP BY STEP&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;New to TomTom Maps APIs? Start here with our step-by-step tutorial on some guiding principles of mapmaking and how to set up your map, complete with dozens of customization options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/creating-map-tomtom-map-styler-step-step"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nPgMI9-A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84frnb0aebjoep1t4359.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nPgMI9-A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84frnb0aebjoep1t4359.jpg" alt="Image description" width="640" height="400"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-vue-quasar-app"&gt;ADDING TOMTOM MAPS TO A VUE + QUASAR APP&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In this tutorial, we create a sample Quasar application. Its JSON file contains example store location information we render on a TomTom map using markers. We then create a route with restrictions for trucks using TomTom’s truck routing API. To follow this tutorial, you should be familiar with Quasar, or at least Vue, and JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-vue-quasar-app"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b14XbDgA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v21t7fpyowows71lorck.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b14XbDgA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v21t7fpyowows71lorck.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-maps-web-sdk-react-native-web-view-app"&gt;USING THE TOMTOM MAPS WEB SDK IN A REACT NATIVE WEB VIEW APP&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Native mobile apps are great from an app user’s perspective, but they aren’t as great for development teams. Developing native apps can be slow, and native mobile developers are both challenging to find and expensive. Even worse, when you’re done, your app only runs on a single platform. Enter: React Native. It lets developers write mobile apps in JavaScript that are nearly as fast as entirely native apps, and that are much easier to create.&lt;/p&gt;

&lt;p&gt;Learn how to embed a map using the Maps SDK for Web and React Native.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-maps-web-sdk-react-native-web-view-app"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mkA2bENN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lro32k97p40975dagesk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mkA2bENN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lro32k97p40975dagesk.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  4: &lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-maps-vue-3"&gt;USING TOMTOM MAPS WITH VUE 3&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Vue 3 is the newest version of Vue.js, one of the most popular JavaScript libraries — alongside React and Angular —for building user interfaces. Throughout this article, we’ll demonstrate how to integrate TomTom Maps into a Vue 3 application, opening up a host of mapping options to take your app to the next level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-maps-vue-3"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3Jbe14uL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/it75a7n0ekgeal70s7w3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3Jbe14uL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/it75a7n0ekgeal70s7w3.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://developer.tomtom.com/blog/build-different/how-migrate-google-maps-tomtom-maps-8-easy-steps"&gt;HOW TO MIGRATE FROM GOOGLE IN 8 EASY STEPS&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In our #3 most-read blog of the year, our developer advocate Olivia Vahsen goes over how to transition different elements of your map from Google Maps to TomTom, as well as where the API differences lie.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/how-migrate-google-maps-tomtom-maps-8-easy-steps"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-modern-react-app"&gt;ADDING TOMTOM MAPS TO A MODERN REACT APP&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Coming in at #2 is React… no surprise there! As the most-used front-end framework, React is a good choice for mapping-heavy web apps. React’s excellent performance is one reason it’s so popular — and it owes much of that performance to its virtual DOM. However, the virtual DOM has a disadvantage: it doesn’t always play nicely with mapping libraries that require access to actual (not virtual) DOM elements. &lt;/p&gt;

&lt;p&gt;React does offer a way to work around this limitation. In this article, we’ll explore how to use this workaround to add TomTom web maps to a sample React application. We’ll use the latest React best practices like Hooks and function components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-modern-react-app"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GACmUcOz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z71glxso6qywkyex1l6o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GACmUcOz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z71glxso6qywkyex1l6o.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://developer.tomtom.com/blog/spotlight/celebrating-earth-day-new-look-feel-our-map-display-api"&gt;CELEBRATING EARTH DAY WITH THE NEW LOOK AND FEEL OF OUR MAP DISPLAY API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Here we are at our #1 most-read blog of the year: announcing the new Map Display API. With new natural features, city and street labels, color changes, and more organized POIs, our maps got a visual revamp while keeping them readable, relevant, and refreshed as our users’ mapping needs evolve over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/celebrating-earth-day-new-look-feel-our-map-display-api"&gt;READ IT NOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eSAynqOP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ayqy19saa77fzivq8wv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eSAynqOP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ayqy19saa77fzivq8wv.jpg" alt="Image description" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CONNECT WITH US
&lt;/h2&gt;

&lt;p&gt;And there you have it! Our top 10 blogs of 2021. Did we miss anything? Feel free to share your favorite blogs of the year, any projects you built, or what you’d like to see in 2022:&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:developeradvocacy@groups.tomtom"&gt;developeradvocacy@groups.tomtom&lt;/a&gt;&lt;br&gt;
Developer Forum: &lt;a href="https://devforum.tomtom.com"&gt;https://devforum.tomtom.com &lt;/a&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tomtomdevs"&gt;@tomtomdevs&lt;/a&gt;&lt;br&gt;
Reddit: &lt;a href="https://www.reddit.com/r/tomtom/"&gt;r/tomtom&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy mapping and see you in 2022!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://developer.tomtom.com/blog"&gt;https://developer.tomtom.com/blog&lt;/a&gt;. You can read the original article &lt;a href="https://developer.tomtom.com/blog/spotlight/tomtom%E2%80%99s-top-ten-recap-our-most-read-blogs-2021"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>motivation</category>
    </item>
    <item>
      <title>19 Developer Resources from November</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Thu, 09 Dec 2021 22:16:50 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/19-developer-resources-from-november-1ib0</link>
      <guid>https://forem.com/tomtomdevs/19-developer-resources-from-november-1ib0</guid>
      <description>&lt;p&gt;...from &lt;a href="https://developer.tomtom.com"&gt;TomTom Developers&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This November brought a new API in public preview, and lots of tutorials to keep you learning and building. From location autocomplete and fuzzy search, to delivery ETAs and data science, Keep reading to catch up on what you may have missed, from location tech tutorials to general tips for devs.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  TOMTOM DEVELOPER BLOGS
&lt;/h1&gt;

&lt;p&gt;Another product update, some new use cases, and a sprinkling of data science. Check out and catch up on the blogs you may have missed this month.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/announcing-snap-roads-api-public-preview"&gt;ANNOUNCING SNAP TO ROADS API IN PUBLIC PREVIEW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’re excited to announce that our Snap to Roads API has recently entered public preview, which means you can now try out new functionality for reconstructing routes from trace points. Learn how to analyze trip behavior for track and trace, on-demand, and more!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-location-autocomplete-and-suggestions-react-native"&gt;USING TOMTOM LOCATION AUTOCOMPLETE AND SUGGESTIONS IN REACT NATIVE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search capabilities are a must-have in modern applications. Learn how to add TomTom Search API to your React Native app. Then, please your mapping application users with a search function, suggested results, and zeroing in on their desired location to quickly find exactly what they're seeking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-data-apis-improve-delivery-eta-accuracy"&gt;USING TOMTOM DATA VIA APIS TO IMPROVE DELIVERY ETA ACCURACY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search capabilities are a must-have in modern applications. Learn how to add TomTom Search API to your React Native app. Then, please your mapping application users with a search function, suggested results, and zeroing in on their desired location to quickly find exactly what they're seeking. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/using-mapping-apis-reward-insurance-customers-good-driving-habits"&gt;USING MAPPING APIS TO REWARD INSURANCE CUSTOMERS FOR GOOD DRIVING HABITS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many insurance companies turn to mobile applications to monitor their clients’ safe — or not so safe — driving. Learn how to use TomTom Maps APIs to build out an app that insurance companies can trust to reward drivers for their good driving habits. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/visualizing-tomtom-traffic-data-data-science-tools"&gt;VISUALIZING TOMTOM TRAFFIC DATA WITH DATA SCIENCE TOOLS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With TomTom’s APIs, data scientists can pull and visualize data to increase business insights. In this blog post, learn how to visualize TomTom’s data with your favorite data science tools, seaborn and Matplotlib. &lt;/p&gt;

&lt;h1&gt;
  
  
  YOUTUBE VIDEOS
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://youtu.be/tYDveOALGmE"&gt;HOW TO SOLVE THE ETA CONUNDRUM - WITH THE TOMTOM MAPS APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We rely on estimated times of arrival (ETAs) now more than ever. Whether we’re waiting on a package, food delivery or taxi ride, an accurate ETA is essential. The problem with ETAs is that they are hard to calculate accurately – and this can lead to both dissatisfied customers and disgruntled drivers. So, how can this be solved? Learn in this video. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tYDveOALGmE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/47xkyhTLDEM"&gt;ADDING TOMTOM FUZZY SEARCH TO YOUR APPLICATION IN REACT NATIVE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This video is the continuation of our &lt;a href="https://youtu.be/1n1QgiHMWEE"&gt;previous React Native tutorial&lt;/a&gt;. In that one, we tried to follow the code from &lt;a href="https://bit.ly/2XsXwBu"&gt;this article&lt;/a&gt;. Adding fuzzy search functionality was also not that hard. Let us know if you find it useful.&lt;/p&gt;

&lt;h1&gt;
  
  
  EVENTS
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://my.demio.com/ref/ihqwRQY4QYE6hhOg?utm_source=linkedin_event_page"&gt;GEOAWESOMENESS WEBINAR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On November 4, Anna Nijjhuis spoke on a panel titled Four Stories About Sustainable Logistics and Transportation. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://terrapinn.zoom.us/webinar/register/rec/WN_jV9KXiUAQKq_1sUsheKNCg?meetingId=ELNJuOj3hWTuNnhpWQ7H2t12cfH6APQTuVXyPeL6i2YjY3gfh9e2edTUZbz0XaJL.Mbs9vwEoZmb8AXAt&amp;amp;playId=TON9KnqGjIJKSAXxrgDHFA1whlkgXci5ODhjLaB-KEdHfqS2a4DgFT7p16ATIPXOB8CwdB4jWJJn3L3h.WeD1c4Jrlo1J4-8y&amp;amp;action=play&amp;amp;_x_zm_rtaid=S_-f0yQyR5CiPSU6pGhXpg.1638486549131.5d9e878d133cae09437863335c88861e&amp;amp;_x_zm_rhtaid=225"&gt;MOVE ASIA WEBINAR&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;On November 18, Arnold Meijer joined Huawei, Grab, and SoCar in a panel discussion on how tech leaders in Asia use maps to improve customer experience and engagement. &lt;a href="https://www.terrapinn.com/exhibition/move-asia/WB-How-tech-leaders-in-Asia-use-maps-to-improve-customer-experience-and-engagement.stm"&gt;You can watch the recording here&lt;/a&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  DEVELOPER FORUM
&lt;/h1&gt;

&lt;p&gt;If you have any questions or roadblocks while building with our Maps APIs, you can always stop by our Developer Forum or our subreddit r/TomTom to get help from us and the community. Here are some popular posts from this month:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/transitions-service-api/2005"&gt;Transitions Service API&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/how-to-add-a-blank-maplayer-on-top-of-tomtom-map/2002"&gt;How to Add a Blank Map Layer on top of TomTom Map&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/how-to-get-the-speed-limit-of-current-route/2022"&gt;How to get the Speed Limit of Current Route&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EXTERNAL RESOURCES
&lt;/h1&gt;

&lt;p&gt;These were some of our favorite external articles and videos this month: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ali6nx404/cheat-sheets-that-always-save-my-time-during-web-development-2ga4?linkId=300000001766670"&gt;Cheat Sheets that always save my time during web development&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://info.codecast.io/blog/developing-habits-that-increase-your-productivity?linkId=300000001762923"&gt;Developing Habits That Increase Your Productivity&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pixelsandink.net/our-relationship-with-work-is-unhealthy-and-unproductive?linkId=300000001762936"&gt;Our relationship with work is unhealthy and unproductive&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.garybricks.com/programmers-guide-to-solving-computational-problems?linkId=300000001743363"&gt;Programmer’s Guide to Solving Computational Problems&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://info.codecast.io/blog/how-to-defeat-procrastination-for-good?linkId=300000001743362"&gt;How To: Defeat Procrastination for Good&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devblog.primerlabs.io/a-guide-to-getting-out-of-a-rut?linkId=300000001770911"&gt;Guide to Getting out of a Rut&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://info.codecast.io/blog/networking-101-for-coders?linkId=300000001698659"&gt;Networking 101 for Coders&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  STAY CONNECTED
&lt;/h1&gt;

&lt;p&gt;Do you have a blog or project you’d like to share with the TomTom Developers community to be featured in an upcoming monthly roundup? Reach out to us at &lt;a href="mailto:developeradvocacy@groups.tomtom"&gt;developeradvocacy@groups.tomtom&lt;/a&gt; and let us know!&lt;/p&gt;

&lt;p&gt;We hope there’s something in here to get you inspired for your next project! Make sure to follow us on &lt;a href="https://twitter.com/tomtomdevs"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA/videos"&gt;YouTube&lt;/a&gt; to see what’s coming up in December. &lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
      <category>motivation</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>19 Location Technology &amp; Developer Resources</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Mon, 25 Oct 2021 20:28:52 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/19-location-technology-developer-resources-from-september-2021-38i9</link>
      <guid>https://forem.com/tomtomdevs/19-location-technology-developer-resources-from-september-2021-38i9</guid>
      <description>&lt;p&gt;September means saying goodbye to summer and hello to fall! It is a time of transition and change, and here at TomTom Developers things have been picking up! Next month you can expect some product updates and a bunch of events, but let’s not get ahead of ourselves: let’s review what happened in September.&lt;/p&gt;

&lt;h2&gt;
  
  
  TOMTOM DEVELOPER BLOGS
&lt;/h2&gt;

&lt;p&gt;This month was all about data science: we explored how you can retrieve, analyze, and visualize data from maps apps using some of our APIs. Think outside the box and see how you can gain valuable insights from mapping data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.tomtom.com/blog/build-different/analyzing-and-visualizing-tomtom-location-history-data"&gt;ANALYZING AND VISUALIZING TOMTOM LOCATION HISTORY DATA&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Now more than ever, developers and data scientists can glean insights into datasets. This article explores the easiest ways to use data science tools to retrieve, analyze, and visualize data from maps applications. We’ll focus on the Location History API, which keeps track of where things have been over time and allows users to manage multiple objects’ locations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.tomtom.com/blog/spotlight/map-accessibility-how-customize-your-map-color-blindness"&gt;MAP ACCESSIBILITY: HOW TO CUSTOMIZE YOUR MAP FOR COLOR BLINDNESS&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In honor of Color-Blind Awareness Day, learn how to make your maps more inclusive with color schemes for color blindness with the TomTom Map Styler. Users can customize mapping layers with color palettes created specifically for different color vision ranges, or even create a map with a color schema interpreted by all forms of color vision deficiency all at once. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.tomtom.com/blog/build-different/using-data-science-analyze-and-visualize-tomtom-notification-data"&gt;USING DATA SCIENCE TO ANALYZE AND VISUALIZE TOMTOM NOTIFICATION DATA&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Data scientists can access a wealth of mapping data to enhance their business insights. Pull TomTom's information into your favorite data science tools using webhooks and APIs, then visualize and analyze away! It's easy with just a bit of Python. This article looks at how you can gain deep insights about more efficient routes and ways to make faster deliveries, or maybe even highlight an area your business can further develop.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.tomtom.com/blog/build-different/how-use-tomtom-data-predictive-modeling"&gt;HOW TO USE TOMTOM DATA FOR PREDICTIVE MODELING&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Data fuels predictive models. Learn how to access TomTom's historical and real-time traffic data and build it into a predictive model to gain insight into future traffic accidents your company may expect on specific routes and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.tomtom.com/blog/build-different/developing-unique-customizations-tomtom-maps-apis"&gt;UNIQUE CUSTOMIZATIONS WITH TOMTOM MAPS APIS&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Explore some fun and unique customization features with our Maps APIs. Learn how to help your users find the thrilling route to their destination, haul specific load types like radioactive materials, and discover how far they can get on a tank of fuel.&lt;/p&gt;

&lt;h2&gt;
  
  
  YOUTUBE VIDEOS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://youtu.be/hsRpE5p9HYE"&gt;FLUTTER WITH THE TOMTOM SEARCH API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In this video, we integrated Fuzzy Search with our TomTom Map demo built with Flutter. This time, running on an iOS simulator, we were able to create a biased search for POIs around us, and view the results as markers on our map.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://youtu.be/1n1QgiHMWEE"&gt;ADDING A TOMTOM MAP IN REACT NATIVE&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;React Native WebView helps your JavaScript application's maps look great across all web platforms. Learn how to embed an interactive TomTom map in your application while ensuring a consistent look across iOS and Android devices — without coding twice.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/1n1QgiHMWEE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  EVENTS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://kazandigitalweek.com/en/"&gt;KAZAN DIGITAL WEEK&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Jeroen Brouwer, Esther Tol, Marcin Graczyk, and Jonathan Americo gave a panel on Traffic Information Services: Addressing Challenges of Modern Cities. To learn more about the event, click &lt;a href="https://kazandigitalweek.com/en/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FORUM
&lt;/h2&gt;

&lt;p&gt;If you have any questions or roadblocks while building with our Maps APIs, you can always stop by our &lt;a href="https://devforum.tomtom.com"&gt;Developer Forum&lt;/a&gt; or our subreddit &lt;a href="https://www.reddit.com/r/tomtom/"&gt;r/TomTom&lt;/a&gt; to get help from us and the community. Here are some popular posts from this month:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/missing-glyphs-for-highways-parks-etc/1914"&gt;Missing Glyphs for highways, parks, etc.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/placing-an-imagesource-at-a-point/1893"&gt;Placing an ImageSource at a point&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/linear-transition-of-chevron/1891"&gt;Linear Transition of Chevron&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/create-text-overlay-on-a-map/1888"&gt;Create text overlay on a map&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  EVEN MORE RESOURCES
&lt;/h2&gt;

&lt;p&gt;These were some of our favorite external articles and videos this month:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/felipperegazio/how-to-ask-for-help-about-code-and-how-to-deal-with-the-answers-a-practical-guide-3i6o"&gt;How to ask for help about code, and how to deal with the answers. A practical guide&lt;/a&gt; – Tips for solving problems when the answer eludes you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://vickyikechukwu.hashnode.dev/tools-for-web-developers-to-work-smarter-and-not-harder?linkId=300000001484782"&gt;Tools for Web Developers To Work Smarter and not Harder&lt;/a&gt; - A List Of Front End Developer Tools You Should Use in 2021 to make you more productive, and simplify your work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amlansaikia.hashnode.dev/what-programming-language-should-i-learn-first?linkId=300000001516799"&gt;What Programming Language Should I Learn First?&lt;/a&gt; – Wondering which language to learn first (or next)? Check out these insights from a web developer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/ufg-news/improve-your-code-quality-effortlessly-34a8102e551e"&gt;Improve your Code Quality Effortlessly&lt;/a&gt; – Tech lead Michal Chylik shares some tips and insights on integrating static analysis tools into your development process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/G76SICBNSfs"&gt;Setting Up a Project for React (and other JavaScript Libraries) with WebPack&lt;/a&gt; – Software developer Ania Kubow gives a video tutorial on React 101 for React newbies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://lo-victoria.com/github-actions-101-deep-dive-into-workflow-attributes?linkId=300000001539211"&gt;GitHub Actions 101: Deep Dive into Workflow Attributes&lt;/a&gt; – Beginner series to automating your workflow with GitHub actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.eduardovedes.com/note-taking-for-software-engineers?linkId=300000001557832"&gt;Note-Taking for Software Engineers&lt;/a&gt; – Software Engineer Eduardo Vedes shares his story on how he’s improved and evolved in the way he takes notes, and how that helped him become better at his job.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  STAY CONNECTED
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.tomtom.com"&gt;Visit the TomTom Developer Portal&lt;/a&gt; to sign up for a free API key and get started building today!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do you have a blog or project you’d like to share with the TomTom Developers community to be featured in an upcoming monthly roundup? Reach out to us at &lt;strong&gt;&lt;a href="mailto:tomtom.developer@gmail.com"&gt;tomtom.developer@gmail.com&lt;/a&gt;&lt;/strong&gt; and let us know!  &lt;br&gt;
  &lt;br&gt;
We hope there’s something in here to get you inspired for your next project! Make sure to follow us on &lt;a href="http://www.twitter.com/tomtomdevs"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA/videos"&gt;YouTube&lt;/a&gt; to see what’s coming up in October.   &lt;br&gt;
  &lt;br&gt;
Happy mapping!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>16 Tips and Tools to Build your Location App with in August</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Mon, 30 Aug 2021 20:13:53 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/16-tips-and-tools-to-build-your-location-app-with-in-august-4m3j</link>
      <guid>https://forem.com/tomtomdevs/16-tips-and-tools-to-build-your-location-app-with-in-august-4m3j</guid>
      <description>&lt;p&gt;&lt;em&gt;Ah, August – the last official month of summer. Whether you took some time to travel locally, globally, or simply had a relaxing staycation, we kept busy at &lt;a href="https://developer.tomtom.com"&gt;TomTom Developers&lt;/a&gt; by creating tutorials and finding resources for all things location tech and developers. Take a look at what you may have missed this month and get caught up!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  BLOGS
&lt;/h2&gt;

&lt;p&gt;Let’s get technical! This month we delved into how to use TomTom Maps with a variety of frameworks, from Svelte to React to React Native. We also built a traffic incident app with our Maps SDK for Android, and spoke with Product Marketing Manager Jonathan Americo for our Mapmakers series.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/tomtom-mapmakers-meet-jonathan-americo-product-marketing-manager"&gt;TOMTOM MAPMAKERS: MEET JONATHAN AMERICO, PRODUCT MARKETING MANAGER&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Product Marketing Manager and traffic expert Jonathan Americo was our featured mapmaker this month. Read about how he got to where he is now, and the importance of traffic data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-svelte-app"&gt;ADDING TOMTOM MAPS TO A SVELTE APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Svelte is a framework that takes a new approach to building user interfaces and makes building your app easier than ever – and enhancing Svelte apps with interactive maps is quick and easy. In this article, learn how to add a map to your app, center the user's current location, and link the location and chosen destination using the TomTom Maps SDK and a little bit of JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wmS-oZlK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txfenwiy4ug45f3aj17a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wmS-oZlK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txfenwiy4ug45f3aj17a.jpg" alt="Two laptops displaying the Svelte UI and a TomTom map" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/using-tomtom-maps-web-sdk-react-native-web-view-app"&gt;USING THE TOMTOM MAPS WEB SDK IN A REACT NATIVE WEB VIEW APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Native WebView helps your JavaScript application's maps look great across all web platforms. In this tutorial, learn how to embed an interactive TomTom map in your application while ensuring a consistent look across iOS and Android devices — without coding twice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/building-traffic-incident-app-tomtom-maps-sdk-android"&gt;BUILDING A TRAFFIC INCIDENT APP WITH THE TOMTOM MAPS SDK FOR ANDROID&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get tips on building an Android app with a real-time traffic incident dashboard – along with displaying traffic flow and allowing users to search for incidents. We'll go over how using RESTful APIs and the TomTom SDK for Android.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-advanced-tomtom-api-features-modern-react-app"&gt;ADDING ADVANCED MAPPING FEATURES TO A MODERN REACT APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Digital maps are critical for navigating cities and continents and provide directions in real time to guide travelers. This article shows you how to create a digital map by integrating the advanced mapping features of TomTom’s Search API and Routing API into a modern React web app.&lt;/p&gt;

&lt;h2&gt;
  
  
  YOUTUBE VIDEOS
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=9dZv_EcSeL8"&gt;DISPLAYING MAPS WITH FLUTTER&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our developer advocates Jose &amp;amp; Olivia followed this tutorial in video form to learn Flutter and how to add a map and marker with the TomTom Maps APIs. Check it out below.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9dZv_EcSeL8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  TOMTOM DEVELOPER FORUM
&lt;/h2&gt;

&lt;p&gt;From retrieving raw traffic data to plotting zip codes on a map, we had some great questions come through the Developer Forum this month. Take a look at some of the most common questions and answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://devforum.tomtom.com/t/retrieving-raw-traffic-data-between-two-points/1835"&gt;Retrieving raw traffic data between two points&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devforum.tomtom.com/t/plotting-zipcodes-on-a-map/1845"&gt;Plotting zipcodes on a map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devforum.tomtom.com/t/undefined-is-not-an-object-evaluating-tt-map/1856"&gt;Undefined is not an object (evaluating ‘tt.map’)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  EXTERNAL RESOURCES
&lt;/h2&gt;

&lt;p&gt;We love Dev.to, and we've also been loving Hashnode lately – we're big fans of these articles this month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://muthuannamalai.tech/10-github-repository-every-web-developer-should-know?linkId=300000001438533"&gt;10 GitHub Repositories Every Web Developer Should Know&lt;/a&gt; – A list of ten GitHub repositories that will help you grow on your dev journey.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/larymak/developer-communities-every-developer-should-join-according-to-your-niche-1a6b?linkId=300000001423308"&gt;Developer Communities Every Developer Should Join According to your Niche&lt;/a&gt; – Looking to get more involved in the dev community? Check out these communities to get some ideas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://meghapathak.com/six-months-of-hashnode-my-journey-as-a-full-time-dev?linkId=300000001423307"&gt;Six months of Hashnode: My Journey as a Full-time Dev&lt;/a&gt; – Are you a new developer, or just curious to hear about someone else’s journey? Check out this article on six stages and reflections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mr-unity-buddy.hashnode.dev/developer-vs-programmer?linkId=300000001413553"&gt;Developer vs. Programmer&lt;/a&gt; – Sometimes these two terms are used interchangeably, but there are actually some subtle and not-so-subtle differences between the two. Read more in this article.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.dhaiwatpandya.com/become-a-better-writer-as-a-developer?linkId=300000001412771"&gt;Become a Better Writer as a Developer&lt;/a&gt; – Writing helps you build an audience, become more employable, and – of course – get better at writing. Here are seven tips to get started.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://ashleemboyer.com/what-the-heck-is-web-a11y"&gt;What the Heck is "web a11y"?&lt;/a&gt; – Learn what a11y means in the web development space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sohamsshah.hashnode.dev/top-12-tips-on-how-to-excel-at-your-developer-job?linkId=300000001403110"&gt;Top 12 Tips on How to Excel at your Developer Job!&lt;/a&gt; – Explore these tips on how to level up at your developer job, from development to communication skills.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  STAY CONNECTED
&lt;/h2&gt;

&lt;p&gt;Sign up for your free developer account and free API key at &lt;a href="https://developer.tomtom.com"&gt;https://developer.tomtom.com&lt;/a&gt; and get started building today!&lt;/p&gt;

&lt;p&gt;Do you have a blog or project you’d like to share with the TomTom Developers community to be featured in an upcoming monthly roundup? Reach out to us at &lt;strong&gt;&lt;a href="mailto:tomtom.developer@gmail.com"&gt;tomtom.developer@gmail.com&lt;/a&gt;&lt;/strong&gt; and let us know! &lt;/p&gt;

&lt;p&gt;We hope there’s something in here to get you inspired for your next project! Make sure to follow us on &lt;a href="https://twitter.com/tomtomdevs"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA/videos"&gt;YouTube&lt;/a&gt; to see what’s coming up in September.  &lt;/p&gt;

&lt;p&gt;Happy mapping!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>reactnative</category>
      <category>flutter</category>
    </item>
    <item>
      <title>20 Inspiring Mapping &amp; Developer Resources</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Wed, 21 Jul 2021 21:56:41 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/20-inspiring-mapping-developer-resources-2lbl</link>
      <guid>https://forem.com/tomtomdevs/20-inspiring-mapping-developer-resources-2lbl</guid>
      <description>&lt;p&gt;&lt;em&gt;Hi! I'm Ruanna, from the TomTom Developer Relations team. Every month on our &lt;a href="https://developer.tomtom.com/blog"&gt;Developer Blog&lt;/a&gt;, we publish a content roundup of all of our tutorials from TomTom Developers, along with some of our favorite external articles, videos, and resources that we enjoyed and shared. Enjoy!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;June flew by! June was a month where we celebrated the stories of some amazing software developers, from Women in Engineering Day to Pride month. Take a look at some of our favorite resources from June and discover what our developer advocates and location experts were up to, to help you make the most of location tech in your apps and beyond.&lt;/p&gt;

&lt;h1&gt;
  
  
  TOMTOM DEVELOPER BLOGS
&lt;/h1&gt;

&lt;p&gt;Learn how to use TomTom maps with Vue, Quasar, or a CMS like Wordpress, Drupal, and Joomla – or explore our on-demand tutorials, from taxi summoning to food delivery apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-tomtom-maps-vue-quasar-app"&gt;ADDING TOMTOM MAPS TO A VUE + QUASAR APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn how to add advanced location technology to your Quasar app in just a few minutes. In this tutorial, we create a sample Quasar application and create a route with restrictions for trucks using TomTom’s truck routing API with Vue and JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/summoning-taxis-tomtom-maps-apis"&gt;SUMMONING TAXIS WITH TOMTOM MAPS APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, we review how to program a taxi summoning service using TomTom APIs and SDKs. You just need to know a little JavaScript to follow this tutorial — but our libraries support other languages too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/how-use-isochrones-food-delivery"&gt;HOW TO USE ISOCHRONES FOR FOOD DELIVERY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isochrones are the secret sauce to precise deliveries – they depict the location from which someone can travel to another location within a certain amount of time and with a certain cost. In this article, we explore isochrones and how to use them in food delivery apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p1LHmqrL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxwm23blpm6jjks56q04.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p1LHmqrL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxwm23blpm6jjks56q04.jpg" alt="Alt Text" width="640" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/how-easily-add-map-your-website-cms-users"&gt;HOW TO EASILY ADD A MAP TO YOUR WEBSITE FOR CMS USERS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article, we’ll explore how easy it is to create a maps plugin that enables users to add maps to their website, with a custom administrative page where businesses can easily add store information.&lt;/p&gt;

&lt;h1&gt;
  
  
  YOUTUBE VIDEOS
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=pyNMMxzs9xs"&gt;HOW TO OPTIMIZE YOUR ROUTES FOR DISTANCE WITH THE TOMTOM ROUTING API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you know you can optimize routes and stop-overs for distance using the Routing API? If you need to save on fuel (or battery), this is a great option for delivery trucks and bikes. In this video, we will experiment with the "computeBestOrder" parameter which sorts the waypoints of your route by distance internally. Check out the tutorial here!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Wrnd6ws6tdE"&gt;BUILD A TRIP PLANNER FOR TRUCKS WITH THE TOMTOM ROUTING APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Calculating where to rest on a long truck trip can be tedious, since there are restrictions to be followed, traffic to be avoided, and more. Here is where the TomTom Routing API can help. In this video, learn how to make a truck trip planner – not just creating the route among waypoints, but also selecting those stopovers based on how long you can drive between rests. Watch it now!&lt;/p&gt;

&lt;h1&gt;
  
  
  FORUM
&lt;/h1&gt;

&lt;p&gt;Our &lt;a href="https://devforum.tomtom.com"&gt;Developer Forum&lt;/a&gt; is a great place to get support when you’re stuck on a project or get inspiration for a new one. Here are some of our most popular questions and answers from the forum this month.&lt;/p&gt;

&lt;p&gt;•    &lt;a href="https://devforum.tomtom.com/t/introducing-new-maps-apis-pricing/1732"&gt;Introducing New Maps APIs Pricing&lt;/a&gt;&lt;br&gt;
•    &lt;a href="https://devforum.tomtom.com/t/calculate-total-miles-per-state/1735"&gt;Calculate Total Miles per State&lt;/a&gt;&lt;br&gt;
•    &lt;a href="https://devforum.tomtom.com/t/tomtom-map-is-not-displaying/1699"&gt;Displaying TomTom Maps with Angular&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  EVEN MORE RESOURCES
&lt;/h1&gt;

&lt;p&gt;There were so many resources we loved in June. We found and shared so many that this month we’re organizing them by category. Here are some articles, videos, and resources we enjoyed and shared this month:&lt;/p&gt;
&lt;h3&gt;
  
  
  Celebrating Inclusivity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codecademy.com/learn/lgbtq-stem-icons?utm_source=twitter&amp;amp;utm_medium=organic-social&amp;amp;utm_campaign=curriculum_2021_lgbtq_history&amp;amp;utm_content=tw_06_22_21_lgbtq_stem_icons"&gt;Codecademy Mini-Course: LGBTQ &amp;amp; STEM Icons&lt;/a&gt; – This mini course by Codecademy explores the life and impact of both well-known and lesser-known queer innovators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/educative/celebrating-pride-how-to-write-gender-neutral-coding-tutorials-m1?linkId=300000001275568"&gt;Celebrating Pride: How to Write Gender-Neutral Coding Tutorials&lt;/a&gt; – &lt;a class="mentioned-user" href="https://dev.to/educativeinc"&gt;@educativeinc&lt;/a&gt; , an interactive learning platform for programmers, wrote this article on how you can make your educational content more inclusive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/microverse/inspirational-women-in-software-development-history-of-computing-1mpk?linkId=300000001275403"&gt;Inspirational Women in Software Development: History of Computing&lt;/a&gt; – In honor of International Women in Engineering Day, we loved this piece from @Microverse on the history of women in software development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/eevajonnapanula/don-t-develop-just-for-yourself-a-developer-s-checklist-to-accessibility-545k?linkId=300000001268897"&gt;Don’t Develop Just for Yourself: A Developer's Checklist to Accessibility&lt;/a&gt; – This article written by &lt;a class="mentioned-user" href="https://dev.to/eevajonnapanula"&gt;@eevajonnapanula&lt;/a&gt; has some great tips on how to make your site more accessible to all.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  All Things Tech
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bcgplatinion.com/insights/apisatscale-setting-the-foundations-for-success/"&gt;APIs@Scale&lt;/a&gt; – A report by PCG Platinion on the API ecosystem and how combing data across industries opens up more opportunities for technology to grow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/pb/10-github-repositories-every-developer-should-know-ngm?linkId=300000001281234"&gt;10 GitHub Repositories Every Developer Should Know&lt;/a&gt; – The best GitHub repositories for web and software developers alike, by &lt;a class="mentioned-user" href="https://dev.to/pb"&gt;@pb&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ania_kubow/build-a-ubereats-deliveroo-clone-in-react-tutorial-ce7?linkId=300000001289217"&gt;Build a Shortest Route App Like UberEats/Deliveroo in React!&lt;/a&gt; – Software developer and YouTuber &lt;a class="mentioned-user" href="https://dev.to/ania_kubow"&gt;@ania_kubow&lt;/a&gt; goes over how to optimize multiple deliveries by travel time using the TomTom Maps SDK for Web.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=d04Q56KFL4E"&gt;Add a Free Map to your WordPress Website&lt;/a&gt; – Robert from TipsWithPunch featured our maps in one of his engaging YouTube tutorials.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/d04Q56KFL4E"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Dose of Inspiration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/alexlsalt/10-things-i-ve-learned-after-3-months-as-a-junior-software-engineer-2m89?linkId=300000001256231"&gt;10 Things I've Learned After 3 Months as a Software Engineer&lt;/a&gt; – Software engineer &lt;a class="mentioned-user" href="https://dev.to/alexlsalt"&gt;@alexlsalt&lt;/a&gt; shares 10 tips to make developer life run more smoothly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/manuthecoder/am-i-a-bad-developer-a-question-developers-commonly-face-4gck?linkId=300000001252429"&gt;Am I a Bad Developer? – A Question Developers Commonly Face&lt;/a&gt; – If you’ve ever asked yourself this question, here are 5 tips for getting back on track, from @manuthecoder .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.sycamore.design/full-stack-developer-journey?linkId=300000001230330"&gt;Wildfire Refugee to Full-Stack Developer&lt;/a&gt; – Web developer Sam Sycamore reflects on the life-changing events that led to his career change.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  STAY CONNECTED
&lt;/h1&gt;

&lt;p&gt;Do you have a blog or project you’d like to share with the TomTom Developers community to be featured in an upcoming monthly roundup? Reach out to us at &lt;strong&gt;&lt;a href="mailto:tomtom.developer@gmail.com"&gt;tomtom.developer@gmail.com&lt;/a&gt;&lt;/strong&gt; and let us know! &lt;/p&gt;

&lt;p&gt;We hope there’s something in here to get you inspired for your next project! Make sure to follow us on Twitter and YouTube to see what’s coming up next.  &lt;/p&gt;

&lt;p&gt;Happy mapping!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article originally appeared on &lt;a href="https://developer.tomtom.com/blog"&gt;https://developer.tomtom.com/blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
      <category>inclusion</category>
    </item>
    <item>
      <title>Women in Tech Spotlight: Kasia Kaczmarek, Product Manager, Maps SDK</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Fri, 28 May 2021 18:07:23 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/tomtom-mapmakers-meet-kasia-kaczmarek-product-manager-maps-sdk-2fki</link>
      <guid>https://forem.com/tomtomdevs/tomtom-mapmakers-meet-kasia-kaczmarek-product-manager-maps-sdk-2fki</guid>
      <description>&lt;p&gt;&lt;em&gt;One of my favorite parts of my role is being able to do what I love – writing! I started a series earlier this year on the &lt;a href="https://developer.tomtom.com/blog"&gt;TomTom Developer Blog&lt;/a&gt; highlighting some of the amazing mapmakers at TomTom – the people behind our Maps APIs and SDKs. Kasia was the first person I had the pleasure of interviewing. I love highlighting women in tech, so it was inspiring to hear her story and fun to capture it through writing – so it can be shared with and inspire others!&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing our TomTom Mapmakers Series
&lt;/h1&gt;

&lt;p&gt;One of our goals at TomTom Developers is to highlight the people behind the products as we continue to build and grow our developer community. In our TomTom Mapmakers series, we will be publishing an interview once a month with some of our product owners, designers, and developers. &lt;/p&gt;

&lt;p&gt;We took the time to speak with Katarzyna Kaczmarek, Product Manager for the TomTom Maps SDK for Web, Android, and iOS. She is based in Lodz, Poland. Read on to hear about her background and experience as a product manager. &lt;/p&gt;

&lt;h1&gt;
  
  
  Meet Kasia
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Can you share about your career journey? How did you get to where you are now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My interest in computer science started in high school. I really liked modern technologies – the internet, and all the opportunities it gives. When I got my first smart phone, I saw a lot of potential in the device and what can be done with that. I wanted to go in this direction because I felt that this is an area that will be very innovative and developing very fast – I knew that this was going to be one of the future industries and how connected our life would be to that. &lt;/p&gt;

&lt;p&gt;Mathematics and physics were always my strongest subjects. I also took computer science and programming courses at school, and those were really cool. I could make some game, some webpage – it was super cool to see that working! Also, the range and the reach of it – with the internet you can reach lots of people. And again, all the opportunities you can achieve with that. &lt;/p&gt;

&lt;p&gt;I studied at Technical University of Lodz in Poland – I took part in an exchange program in Copenhagen –   where I lived for next 7 years. I got a master's degree in Computer Science and Engineering from Technical University of Denmark. Moving out, living abroad, and studying at a foreign university was a great experience. At the university I took a lot of computer science courses, but also courses in telecommunications – mobile phones, mobile data. For me it was so cool to understand how it all works. I like to have that knowledge with 5G, 6G coming, I understand what that means, and it’s great to have that background. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That sounds like a great experience. What did you do afterwards?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After I graduated, I started working in a bank as a developer. This was yet another great experience – it was part of my grad program. I worked in a data warehouse, doing business intelligence. As an exchange in the bank, I worked with some advisory systems and online banking – I was coding tools for advisors and doing some implementations for online banking. It was very challenging – everything was completely new. With IT, there are so many technologies that at some point in time every developer needs to specialize. It’s not so simple as you learn about technology and that’s it – you have to be familiar with so many supporting technologies as well. &lt;/p&gt;

&lt;p&gt;When I studied at school, I learned the basics, the way of thinking, and the ways of doing stuff. But when I started to work, then I had to tailor all the knowledge I had to the specific environment I worked in – to specific tasks and technologies. Which was good. Also, I was lucky in the bank, there was scrum running as the methodology for project management.  I got very interested in that and I asked if I could take one of the organizational roles, and that’s how I started to be a Product Owner. After I started, I knew this was that I wanted to do. I loved the connection of tech knowledge and skills – and mind – with communication. I had to talk to the business reps often, make visual communications, presentations, collect requirements, work together w team on what we should do. This is what I really liked. &lt;/p&gt;

&lt;p&gt;After seven years I decided to go back home – I missed my family, friends. This phase in my life was over and I wanted a change and start a new chapter, so I moved back to Lodz. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you share a bit about your experience at TomTom?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I was at TomTom, I really started to master the skills. They had a very interesting job offering. I got hired as a Product Owner. I started to work in Location and Navigation Services (LNS) – I didn’t know that much about Android and iOS development because it was my first time working and developing for mobile phones. However, this was not a problem because my team was very supportive, patient, and open to sharing knowledge. They were also very engaged in doing things together. With such great people, I could only grow and we could deliver a great product together. &lt;/p&gt;

&lt;p&gt;In a relatively short amount of time, we released a product into production. For some of the people, it was the first product in production. I also had a pleasure to travel to San Francisco with two developers from my team for the launch of the product – we prepared a 90-minute workshop. It’s been a great journey, and we’re continuing to develop the SDK now with more and more features. Everyone is very dedicated to the work. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bskpB2qJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfh1cid3me878no2ekzp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bskpB2qJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hfh1cid3me878no2ekzp.jpg" alt="Alt Text" width="640" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you elaborate more on your role?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My role as a Product Manager involves creating product vision and strategy, collecting requirements and figuring out what problems we should solve for our users, analyzing with the Team which next features we should bring to the product, working and aligning with other teams. Another important aspect involves interaction with stakeholders that are in dialogue with customers or interact with customers directly depending on the case.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is your favorite part of your role?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I enjoy the combination of working in technical and business environments to bring value for our users, customers and businesses. I like working with other PMs to learn what is happening in the rest of the organization in order to find topics that are relevant for the SDK or that the SDK should be a part of. This is great – hearing and learning about new things, and bringing this information to the team and working out together how we can expose it in our products. [My favorite part is] learning about topics and technologies, our solutions, and working together with the team on bringing these into the product. &lt;/p&gt;

&lt;p&gt;I also like to understand our clients and our market – of course it’s important to create a product they will like, to be up to date with the customer needs and business opportunities. When you study who the customer is, what their needs are, and what products they do, you can come up with more ideas that can level up your business. It’s for me personally, a small success to come up with an idea for the SDK. Thanks to that I’m able to bring the product to the next level.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a challenging aspect of your role?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some challenges include an influx of ideas from various people which have to be processed, and then decide what to reject or what to accept. It’s important to think holistically and what the best for the product and business is so it brings value for our customers and the company. &lt;/p&gt;

&lt;p&gt;There are a lot of people I collaborate with. The business and ideas are dynamic, and it can be difficult – different people have different ideas or arguments that might be equally reasonable, but sooner or later we have to decide to go right or left. This is always a challenge to assess which idea is the right one – which we should continue with. There is also a lot of technical discussions and talks about technological choices.  But I have great coworkers and the team to support and to work out the best way.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjB3Uu9M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rpua2mgvbjxivo40x8b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjB3Uu9M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rpua2mgvbjxivo40x8b.jpg" alt="Alt Text" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is it like being a woman in tech? What do you wish people knew about our industry?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I love being a woman in tech! It is because I like tech and people who are passionate about it. In fact, there are more and more girls joining IT in both organizational and engineering roles, which is great to see. However, there are a lot of stereotypes about the IT business, and many are negative which I disagree with. All people I’ve met at the bank, at TomTom, in all departments, have been extremely nice and helpful. IT is a young field of industry so there are people from my generation or the generation before, and these are topics that are interesting for us. &lt;/p&gt;

&lt;p&gt;My colleagues are very friendly and communicative, open to share knowledge and discuss different ideas – it’s a pleasure to work with them. It is fun to work with them too! We laugh a lot and there are a few funny situations every day. The atmosphere at work is very friendly and relaxed, it doesn’t matter if you are a woman or a man, you are a part of the Team! Moreover, I think everyone likes having female engineers around – they’re great team players, very good at what they are doing, and everyone appreciates they great work. All female developers are very respected in the organization and they have strong positions. I enjoy working with them a lot  – greetings to Asia, Ania, Dagmara, Julia, Justyna, Magda, Marta, Monika...! :) &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think would be the most fun country to map?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I think that every country is fun to map as every country is special in a different way. Mediterranean countries, US, Australia, South America have wonderful coast lines. Countries with mountains have wonderful thrilling routes that are cool to see on the map, especially interesting for bikers. There are huge cities in counties of Asia, these regions are important to map as it brings value for so many people on daily basis. Also, there still so many uncovered places that could be added to the map. As a PM, I’d say that the coolest country or region to map is the one which brings most value for most users and businesses.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  "I think that every country is fun to map as every country is special in a different way. As a Product Manger, I'd say that the coolest country or region to map is the one which brings most value for most users and businesses."
&lt;/h3&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Learn More
&lt;/h1&gt;

&lt;p&gt;You can connect with Kasia on her LinkedIn page &lt;a href="https://www.linkedin.com/in/katarzyna-kaczmarek-0a316748/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="https://developer.tomtom.com"&gt;TomTom Developer Portal&lt;/a&gt; to sign up for your free API key and get building with our Maps APIs and SDKs today!&lt;/p&gt;

&lt;p&gt;To learn more about the Maps SDK, check out our documentation here:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.tomtom.com/maps-sdk-web-js"&gt;BRAND NEW Maps SDK for Web&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.tomtom.com/maps-android-sdk/map-examples"&gt;Maps SDK for Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.tomtom.com/maps-sdk-ios/map-examples"&gt;Maps SDK for iOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lastly, check out Kasia's introduction to the new SDK for Web v6 here:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/sf3DFil3iZA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Happy mapping!&lt;/p&gt;

</description>
      <category>womenintech</category>
      <category>career</category>
      <category>motivation</category>
    </item>
    <item>
      <title>17 Blogs &amp; Videos That Will Help you Develop your App</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Tue, 25 May 2021 20:56:55 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/17-blogs-videos-that-will-help-you-develop-your-app-a90</link>
      <guid>https://forem.com/tomtomdevs/17-blogs-videos-that-will-help-you-develop-your-app-a90</guid>
      <description>&lt;p&gt;April was a month with some fun news as we refreshed our Map Display API. We also had some new tutorials in the form of blogs, videos, and webinars on all things ETA and last mile. Take a look at what our developer advocates and location experts were up to this month to help users make the most of location technology in their apps and beyond.&lt;/p&gt;

&lt;h1&gt;
  
  
  TOMTOM DEVELOPER BLOGS
&lt;/h1&gt;

&lt;p&gt;Our tutorials this month ranged from using the Routing API with JavaScript to adding TomTom maps to a React app, while Search API Product Manager Maarten Clements shared about his career journey and gave an in-depth look at trends and opportunities for developers in search. Read on!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/celebrating-earth-day-new-look-feel-our-map-display-api"&gt;CELEBRATING EARTH DAY WITH THE NEW LOOK &amp;amp; FEEL OF OUR MAP DISPLAY API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This month, the TomTom Map Display API got an update! This new map style includes changes like brand-new colors, natural features, organized POIs, and improved street labels. Learn more about this update &amp;amp; how it changes your map. &lt;a href="http://developer.tomtom.com/blog/spotlight/celebrating-earth-day-new-look-feel-our-map-display-api"&gt;Read more here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aAmGhlUs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4lmtl609s3h04l8ldxpi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aAmGhlUs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4lmtl609s3h04l8ldxpi.jpg" alt="Alt Text" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/tomtom-mapmakers-%E2%80%AFmeet-maarten-clements-search-api-product-manager"&gt;TOMTOM MAPMAKERS: MEET MAARTEN CLEMENTS, SEARCH API PRODUCT MANAGER&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the third article in our Mapmakers series, we spoke with Maarten Clements, Search API extraordinaire. Learn more about his journey from childhood map-lover to leading the product vision for all things search at TomTom, and what opportunities are out there for developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/routing-and-eta-anatomy-trip"&gt;ROUTING AND ETA: ANATOMY OF A TRIP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article dives into working with the TomTom Routing API (using a little JavaScript) to deliver accurate estimated times of arrival, or ETAs. We’ll look at how different options and the time of day change how ETAs are calculated, using two simple applications: ride-hailing services and package delivery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/routing-and-eta-anatomy-trip"&gt;ADDING TOMTOM MAPS TO A MODERN REACT APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s easy as pie to add detailed, interactive maps to web apps using the TomTom Maps SDK for JavaScript. As the most-used front-end framework, React is a great choice for mapping-heavy web apps. In this article, learn how to add TomTom web maps to a sample React app using Hooks and function components.&lt;/p&gt;

&lt;h1&gt;
  
  
  TOMTOM DEVELOPERS YOUTUBE TUTORIALS
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://youtu.be/aIvcgc-R8TA"&gt;MORE TAXI DISPATCHER TOOLS WITH THE TOMTOM MAPS APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this video, developer advocates Jose and Olivia follow the Building a Taxi Dispatcher App tutorial from our Developer Portal. Learn how to “dispatch” taxis to someone’s location by calculating the fastest route to pick them up. &lt;a href="http://youtu.be/aIvcgc-R8TA"&gt;You can watch the tutorial here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4RoUzC_o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2ni9rfak6tvy5sq61jn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4RoUzC_o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2ni9rfak6tvy5sq61jn.jpg" alt="Alt Text" width="640" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/Z0To3WK7z7U"&gt;ADDING A TOMTOM MAP WITH THE QUASAR FRAMEWORK&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn how to add a TomTom map with the Quasar framework to build a neighborhood social app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/bJUcA0f7TYk"&gt;HOW ETA WORKS WITH THE TOMTOM MAPS APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whether you’re commuting to work or a delivery company delivering food, ETAs mean different things — but they’re always important. In this video, Product Marketing Manager Dosanna Wu explains all about ETAs, and what they mean to you as a developer using our Maps APIs to help companies keep their customers on the right routes.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bJUcA0f7TYk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  EVENTS
&lt;/h1&gt;

&lt;p&gt;Product Marketing Manager Anna Borbotko gave a talk on &lt;em&gt;Accelerating Performance in the Last Mile&lt;/em&gt; at World Mail &amp;amp; Express Americas, along with panelists from Doddle, Walmart eCommerce, and Tesla. &lt;/p&gt;

&lt;p&gt;If you missed the event, no need to fear: &lt;a href="https://youtu.be/E0LQg3zEdZU"&gt;you can watch the entire panel discussion here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To read more about the last mile, check out these related articles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/last-mile-logistics-developer%E2%80%99s-point-view"&gt;Last-Mile Logistics: A Developer’s Point of View&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/how-location-apis-can-help-power-fleet-management-software"&gt;How Location APIs can help power Fleet Management Software&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tomtom.com/blog/route-planning/last-mile-delivery-tracking/"&gt;What is Last Mile Delivery Tracking?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  FORUM FINDINGS
&lt;/h1&gt;

&lt;p&gt;Our &lt;a href="https://devforum.tomtom.com"&gt;Developer Forum&lt;/a&gt; is a great place to get help when you’re stuck on a project, or get inspiration for a new one. Here are some of our most popular forum posts this month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/apache-instead-of-node/1608"&gt;Running Maps SDK for Web on Apache instead of node.js&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/update-polyline-coordinates/858"&gt;Implementing route tracking by updating polyline coordinates&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devforum.tomtom.com/t/any-way-for-checking-given-location-point-is-on-route-or-not-or-near-to-it/1599"&gt;Checking whether a given location point is near, on, or off a route&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EVEN MORE RESOURCES
&lt;/h1&gt;

&lt;p&gt;Lastly, we loved these articles from Dev.to for an extra dose of inspiration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/devggaurav/5-super-under-rated-free-tools-resources-i-use-almost-every-day-as-a-frontend-developer-5c6g"&gt;5 Super Underrated Free Tools/Resources I use Almost Every Day (As a Front-end Developer)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/andrewbaisden/50-cool-web-and-mobile-project-ideas-for-2021-1pgl"&gt;50 Cool Web And Mobile Project Ideas for 2021&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/manuhd8/the-hyper-growth-of-multi-service-on-demand-apps-complete-analysis-guide-on-creating-on-demand-apps-2map"&gt;The Hyper-Growth Of Multi-Service On-Demand Apps: Complete Analysis Guide On Creating On-Demand Apps&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  STAY CONNECTED
&lt;/h1&gt;

&lt;p&gt;Do you have a blog or project you’d like to share with the TomTom Developers community to be featured in an upcoming monthly roundup? Reach out to us at &lt;a href="mailto:tomtom.developer@gmail.com"&gt;tomtom.developer@gmail.com&lt;/a&gt; and let us know! &lt;/p&gt;

&lt;p&gt;We hope there’s something in here to get you inspired for your next project! Make sure to follow us on &lt;a href="https://www.twitter.com/tomtomdevs"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA"&gt;YouTube&lt;/a&gt; to see what’s coming up next. &lt;/p&gt;

&lt;p&gt;Happy mapping!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>devrel</category>
    </item>
    <item>
      <title>Maps APIs Tutorials from March</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Fri, 02 Apr 2021 20:00:38 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/maps-apis-tutorials-from-march-480</link>
      <guid>https://forem.com/tomtomdevs/maps-apis-tutorials-from-march-480</guid>
      <description>&lt;p&gt;&lt;em&gt;Calling all location lovers! March was a month of new blogs, videos, and events from TomTom Developers. From ridesharing apps, traffic alert dashboards, and ETA alerts, to live weather maps and delivery service apps. Check out our content roundup to make sure you didn't miss anything from TomTom Developers this month. Check out what our developer advocates and location experts worked on this month to help users build their applications using TomTom’s location technology.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Blog Articles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;YouTube Videos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Events&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TomTom Developer Blogs &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This month was filled with tutorials: from ridesharing apps to traffic alert dashboards to ETA alerts, learn how to build something new today. And don’t miss our spotlight on the Product Manager for our Map Display and Traffic APIs, Dominika Spolnik! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/leverage-routing-geofencing-and-notifications-apis-send-eta-alerts" rel="noopener noreferrer"&gt;LEVERAGE ROUTING, GEOFENCING, AND NOTIFICATIONS APIS TO SEND ETA ALERTS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Customers want alerts when their ride, food, or groceries are nearby, without having to constantly refresh their phone. Learn how you can create these essential tracking and notification functions using TomTom’s Routing, Geofencing, and Notifications APIs. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/build-traffic-alert-dashboard-tomtom-traffic-api" rel="noopener noreferrer"&gt;BUILD A TRAFFIC ALERT DASHBOARD WITH THE TOMTOM TRAFFIC API&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In this article, we use TomTom’s real-time traffic services to create a seed project for a radio news service’s traffic dashboard incorporating the TomTom Traffic API and SDK into a single HTML file. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/makings-simple-ridesharing-service-tomtom-apis-mobile-app" rel="noopener noreferrer"&gt;THE MAKINGS OF A SIMPLE RIDESHARING SERVICE WITH TOMTOM APIS: THE MOBILE APP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read a high-level overview of how you can use TomTom's Maps SDK and Search, Routing, and Geofencing APIs to build a mobile application powering a simple ridesharing business, focusing on the user-facing mobile app side. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/makings-simple-ridesharing-service-tomtom-apis-back-end" rel="noopener noreferrer"&gt;THE MAKINGS OF A SIMPLE RIDESHARING SERVICE WITH TOMTOM APIS: BACK END&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In part 2 of our ridesharing service series, we'll walk you through the back-end architecture and some of the best practices for the APIs you'd use to power a ridesharing business. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/making-geomarketing-more-effective-accurate-poi-data" rel="noopener noreferrer"&gt;MAKING GEOMARKETING MORE EFFECTIVE WITH ACCURATE POI DATA&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Geomarketing uses location data to improve the probability of a particular message reaching the right prospect at the right time. Learn how TomTom's POI data and Extended Search API enable geotargeting for precise marketing efforts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/spotlight/tomtom-mapmakers-dominika-spolnik-product-manager-map-display-traffic-apis" rel="noopener noreferrer"&gt;TOMTOM MAPMAKERS: DOMINIKA SPOLNIK, PRODUCT MANAGER, MAP DISPLAY &amp;amp; TRAFFIC APIS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the second article of our TomTom Mapmakers series, we spoke with Dominika Spolnik, Product Manager for the Map Display API and Traffic API to learn more about her extensive experience with – and love of – maps!   &lt;/p&gt;

&lt;h3&gt;
  
  
  TomTom Developers YouTube Tutorials &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/_X795ckG-3A" rel="noopener noreferrer"&gt;BUILD A CUSTOM MAP STYLE WITH JAVASCRIPT&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn how to create a custom map style with JavaScript. In this quick tutorial, we go over how to rotate the colors of a palette and update the colors of each layer of your map. Whether you want to get creative with your own project or create a map for a company or client’s brand, this is a great feature to learn. You can watch the video here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluj0gjk8yn02opggtfca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluj0gjk8yn02opggtfca.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/6oEPjwVYEYg" rel="noopener noreferrer"&gt;USING OPENWEATHERMAP APIS WITH TOMTOM MAPS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try your hand at meteorology with the OpenWeatherMap APIs. Learn how to build a live weather map, including adding a cloud and rain layer, getting weather information, and adding weather icons to your map in this long-form tutorial. Check it out here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa49l7h92ulx28c59esgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa49l7h92ulx28c59esgo.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/znipOKnJGDU" rel="noopener noreferrer"&gt;BUILDING A SERVICE DELIVERY APP, PART 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this Devisode, we go over the TomTom Maps APIs needed to build a simple service delivery app for the business of your clients. Learn how to accept an order, add the optimal route, and notify the customer and delivery center when the driver is close to its destination. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/znipOKnJGDU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Events &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ESRI IRELAND&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On March 10th, Jeroen Brouwer gave a talk on Using Transportation Data in your ArcGIS Mapping &amp;amp; Analysis. If you missed it, check out this related article on &lt;a href="https://developer.tomtom.com/blog/build-different/how-incorporate-arcgis-data-tomtom-maps" rel="noopener noreferrer"&gt;How to Incorporate ArcGIS Data into TomTom Maps&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MOVE AMERICA&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;MOVE America Virtual was March 17th-18th – an online event focused on solving the mobility challenge and shaping the future of transportation in America. We spoke at two different sessions: a roundtable discussion on  ETA &amp;amp; On-demand - How Can we Make it Work?  with Anna Borbotko, Dosanna Wu, Sander Pluimers, &amp;amp; Priya Agit, and a talk on How ETA Works, and the Tools you can use to Master it with Product Marketing Manager Dosanna Wu. &lt;/p&gt;

&lt;p&gt;To learn more about ETA, check out these related articles: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/understanding-how-tomtom-routing-api-provides-accurate-etas" rel="noopener noreferrer"&gt;Understanding how the TomTom Routing API Provides Accurate ETAs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/creating-app-efficient-and-convenient-delivery-services" rel="noopener noreferrer"&gt;Creating an App for Efficient and Convenient Delivery Services&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/leverage-routing-geofencing-and-notifications-apis-send-eta-alerts" rel="noopener noreferrer"&gt;Leverage Routing, Geofencing, and Notifications APIs to Send ETA Alerts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TRANSPORT INDIA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Transport India Expo 2021, India's largest trade expo and exhibition, showcases smart technology and solutions in electric mobility. Vinod Kumar gave a talk on Ridesharing with EVs , and Parag Bedarkar also spoke on Adoption of New Technologies for Safer Roads. Check out these related blogs to learn more about these topics: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/build-different/adding-ev-routing-tomtom-web-map-understanding-apis" rel="noopener noreferrer"&gt;Adding EV Routing to a TomTom Web Map: Understanding the APIs&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.tomtom.com/blog/decoded/makings-simple-ridesharing-service-tomtom-apis-mobile-app" rel="noopener noreferrer"&gt;The Makings of a Simple Ridesharing Service with TomTom APIs: The Mobile App&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay Connected
&lt;/h3&gt;

&lt;p&gt;Got questions or looking for inspiration for your next project? Head to our &lt;a href="https://developer.tomtom.com" rel="noopener noreferrer"&gt;Developer Portal&lt;/a&gt; to sign up for your &lt;strong&gt;free API key&lt;/strong&gt; and connect with us in our &lt;a href="https://devforum.tomtom.com/" rel="noopener noreferrer"&gt;Developer Forum&lt;/a&gt;, and don’t forget to follow us on &lt;a href="https://twitter.com/TomTomDevs" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA/videos" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; to see what’s coming up in April. &lt;/p&gt;

&lt;p&gt;Happy mapping!  &lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Creating an App for Efficient and Convenient Delivery Services</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Mon, 04 Jan 2021 22:29:21 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/creating-an-app-for-efficient-and-convenient-delivery-services-2pla</link>
      <guid>https://forem.com/tomtomdevs/creating-an-app-for-efficient-and-convenient-delivery-services-2pla</guid>
      <description>&lt;p&gt;&lt;em&gt;The demand for on-demand services is not going away anytime soon – which means there is lots of room for developers to create new apps. In this article we'll look at the details of how you could create a real-world delivery management application based on TomTom technology.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Food and grocery delivery has become an important convenience to the busy lives people lead. But the demand for quality has never been higher. Customers want their food hot, and companies need to maximize their drivers' efficiency.&lt;/p&gt;

&lt;p&gt;TomTom enables a business to optimize its delivery process by providing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Precise location of each delivery address through geocoding, including exact coordinates and information on various entry points.&lt;/li&gt;
&lt;li&gt;Reverse geocoding for tracking and understanding driver behavior, as well as tracking deliveries en-route.&lt;/li&gt;
&lt;li&gt;The most efficient route using all available, including traffic information.&lt;/li&gt;
&lt;li&gt;An accurate estimate of arrival time at each waypoint along the route.&lt;/li&gt;
&lt;li&gt;Geofencing alerts that allow the app to react to events such as when a driver enters an area, when a driver exits an area, when they have stayed within the area for too long.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes the most reliable route is the route with the best estimated time of arrival (ETA) — the "fastest" route. Sometimes even if the route looks short, there may be more variability that can cause the ETA to deviate. Customer satisfaction related to travel time is a combination of meeting the ETAs and the actual travel time duration. For instance, in the case of driving to the airport, an accurate ETA is more important than the risk of delay due to a shorter but more variable route. TomTom’s routing algorithm takes all these into consideration.&lt;/p&gt;

&lt;p&gt;This article will explore how you could create a real-world delivery management application using TomTom technology.&lt;/p&gt;

&lt;p&gt;You can watch an overview of the following tutorial here:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/XJia2rf7-ec"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Location Functions to Drive a Delivery Business
&lt;/h1&gt;

&lt;p&gt;Our delivery app needs to support the following functions:&lt;/p&gt;

&lt;h3&gt;
  
  
  Geocoding
&lt;/h3&gt;

&lt;p&gt;Geocoding is one operation that will be used repeatedly. It translates an address to a GPS coordinate. &lt;/p&gt;

&lt;p&gt;The Geocode endpoint of the &lt;a href="https://developer.tomtom.com/search-api/search-api-documentation-geocoding/geocode"&gt;Search API&lt;/a&gt; is very tolerant of typos and incomplete information. For example, using the query “Times Square”, these are the top three results ordered by a confidence score are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Times Square NY, as a neighborhood&lt;/li&gt;
&lt;li&gt;Times Square, Friendship, NY&lt;/li&gt;
&lt;li&gt;Times Square, Harlington, TX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many properties available to narrow down the search using parameters such as coordinates, bounds, country sets and so on. You can run some tests using the handy &lt;a href="https://developer.tomtom.com/content/search-api-explorer#/Search/get_search__versionNumber__geometrySearch__query___ext_"&gt;API Explorer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alongside the coordinate of the building self is a set of entry points, indicating the positions of possible entrance ways.&lt;/p&gt;

&lt;p&gt;For example, there are two listed entry points for the Moscone Center (747 Howard St, San Francisco).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;entryPoints&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;position&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;37.78424&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;122.40147&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
 &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;minor&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;position&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
             &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;37.78417&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;122.40156&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using the coordinate, we can then perform the next set of functions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Routing
&lt;/h3&gt;

&lt;p&gt;Using the GPS coordinates of where the driver is, the pickup location, and the customer location, we are able to calculate the most efficient route using all available information.&lt;/p&gt;

&lt;p&gt;TomTom's routing algorithm provides several types of routing including but not limited to: fastest route, shortest route, and economic route.&lt;/p&gt;

&lt;p&gt;Note the distinction between fastest and shortest route. Even though one route is shorter, it could have a speed limit of 60kph, but the longer path includes a section on a motorway with a speed limit of 100kph. By default, the TomTom Routing API would choose the fastest route available. &lt;/p&gt;

&lt;p&gt;Better yet, TomTom is able to optimize travel time using its industry-leading traffic data for immediate departure or through analysis of historical patterns using its extensive historical traffic data for future departure. &lt;/p&gt;

&lt;p&gt;Using the routing information, we can determine when a driver needs to leave to pick up the order and when a customer can expect arrival.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search
&lt;/h3&gt;

&lt;p&gt;TomTom has a massive database of Point of Interests (POIs), including restaurants, grocery stores, parking lots, gas stations and charging stations for electric vehicles just to name a few. You can even get opening and closing times for businesses.&lt;/p&gt;

&lt;p&gt;With a given coordinate, we can find such POIs near the destination using &lt;a href="https://developer.tomtom.com/content/search-api-explorer#/Search/get_search__versionNumber__nearbySearch___ext_"&gt;Nearby Search&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With a calculated route, we can even find POIs along the route using a maximum allowable detour time via the &lt;a href="https://developer.tomtom.com/content/search-api-explorer#/Search/post_search__versionNumber__searchAlongRoute__query___ext_"&gt;Along Route Search API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Geofencing and Notifications
&lt;/h3&gt;

&lt;p&gt;Geofences allow us to monitor an area and respond to events such as when a driver is within range, when they leave the area, and when they have dwelled within the area for a certain amount of time.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://developer.tomtom.com/geofencing-api/tutorials/fence-creation"&gt;Geofences Creator&lt;/a&gt; is an application that enables you to easily create and edit geofences interactively, right in a browser, using the TomTom Geofencing API.&lt;/p&gt;

&lt;p&gt;Used in conjunction with the notification API, we could send out an alert through emails or web hook urls when a driver crosses the fence, notifying the customer to get ready for pick up.&lt;/p&gt;

&lt;p&gt;We could also send “dwell” alerts if a driver stays too long within a geofence. This matters to businesses and consumers because it enables follow up if there are any issues — the driver can’t find the entrance, the driver is waiting for the delivery, and so on.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting Started Building a Delivery App
&lt;/h1&gt;

&lt;p&gt;Before we begin, you will need an API key. You can obtain one by signing up for a &lt;a href="https://developer.tomtom.com/"&gt;free TomTom developer account&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The focus of this article is on the implementations of the following endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;POST {appUrl}/order/accept/{driverId}/{orderId}&lt;/strong&gt; – A driver looks at an order and decides they can take it on&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;POST {appUrl}/driver/{driverId}/position?lat={lat}&amp;amp;lng={lng}&lt;/strong&gt; – A driver reporting their current location&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code in the rest of this article was created for an Express.js server, but the core logic is contained in a single, which can be ported elsewhere including a client application.&lt;/p&gt;

&lt;p&gt;You can also find the latest &lt;a href="https://developer.tomtom.com/maps-sdk-web-js/downloads"&gt;TomTom Maps SDK for Web&lt;/a&gt; on CDN as a minified JS file, or a downloadable zip package. &lt;/p&gt;

&lt;p&gt;The SDK can be installed via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;tomtom&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;international&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;web&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;sdk&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since we are implementing a server in node.js, we would like to use the node version in our file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tomtom-international/web-sdk-services/dist/services-node.min.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Geocoding Pickup and Delivery Addresses
&lt;/h1&gt;

&lt;p&gt;Geocoding is an important operation in our app. By translating the pickup and delivery address into coordinates, we can then determine the best route for the driver, create geofences, and find POIs along the way.&lt;/p&gt;

&lt;p&gt;Here is the full implementation of the getGeoCode call, which we use as a utility function throughout the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getGeoCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;geocode&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We do not need to narrow the search any further as we would have the full addresses of both the pickup location and the delivery location.&lt;/p&gt;

&lt;p&gt;Now we can move on to the next step: when a driver clicks on an order and accepts the job.&lt;/p&gt;

&lt;h1&gt;
  
  
  Accepting an Order
&lt;/h1&gt;

&lt;p&gt;In our scenario, driver one will go to the pickup location and deliver it to a customer at the destination.&lt;/p&gt;

&lt;p&gt;The order will be ready for pick up in 30 minutes.&lt;/p&gt;

&lt;p&gt;Let's start with calculating the estimated time from the driver's current location to the pick-up location.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X7aKmlkP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/92xrj2yzanrops10gfjk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X7aKmlkP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/92xrj2yzanrops10gfjk.jpg" alt="Alt Text" width="589" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we know when the pickup will be ready, we can also calculate the time it takes to go to the pickup location to the final destination where the customer is.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pickup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getGeoCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getGeoCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pickupLocation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deliveryLocation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To calculate the route and obtain an estimate, build up a request like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;locations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;eta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;calculateRoute&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;
    &lt;span class="na"&gt;locations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Making the same call for the two trips seems inefficient, we can batch them together.&lt;/p&gt;

&lt;p&gt;By combining the request into an array, and setting batch mode to "sync", you can expect an array of responses back:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;eta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;calculateRoute&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;batchMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sync&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;batchItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;toDestination&lt;/span&gt;&lt;span class="p"&gt;]})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The complete version of the function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;doConfirmOrder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pickup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getGeoCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;getGeoCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pickupLocation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deliveryLocation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// To be explained in the next section&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createGeofence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;deliveryLocation&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;locations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;toDestination&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;departAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readyTime&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="na"&gt;locations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;pickupLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;deliveryLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;deliveryLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;eta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;calculateRoute&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="na"&gt;batchMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sync&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;batchItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;toDestination&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;pickup&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;eta&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;toGeoJson&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="na"&gt;dropOff&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;eta&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;toGeoJson&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bonus: Help a driver find parking.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getParkingNear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parking&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nearbySearch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// 7369 is the category for open parking area&lt;/span&gt;
        &lt;span class="na"&gt;categorySet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;7369&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;center&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="c1"&gt;// find parking within a 300 meter radius&lt;/span&gt;
        &lt;span class="na"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;parking&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Geofencing and Alerts
&lt;/h1&gt;

&lt;p&gt;To set up geofences and alerts, we are going to create a project for the order, create a geofence for the project, then a geofencing object that represents the driver.&lt;/p&gt;

&lt;p&gt;First, we need to generate an admin key for geofences by making a POST call to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//api.tomtom.com/geofencing/1/register&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will need to provide a secret in the body of the request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;XPOST&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{
   "secret": "your_secret"
 }&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.tomtom.com/geofencing/1/register?key=Your_API_Key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This key will be used in conjunction with the API key when making calls to the geofencing APIs.&lt;/p&gt;

&lt;p&gt;Next, we need to give TomTom permission to record object transitions. These calls only need to be made once. I have included it in the sample, but you only need to make that call once through curl or Postman as outlined &lt;a href="https://developer.tomtom.com/geofencing-api/geofencing-api-documentation-configuration-service/set-new-settings-values"&gt;here&lt;/a&gt;, or through JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;consent&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;requestUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;  &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;adminKey=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;adminKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geofencingUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.tomtom.com/geofencing/1/settings&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geofencingConsent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="na"&gt;consentForStoringTransitionsHistory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="na"&gt;consentForStoringObjectsPositionsHistory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;requestUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;geofencingUrl&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;makePostJsonRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;geofencingConsent&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here are the methods for each of the operations. First, the utility method for building API requests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;baseUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.tomtom.com/geofencing/1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;keyPhrase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;`key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;adminKey=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;adminKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Creating&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="na"&gt;project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;createProject&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/projects/project?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;keyPhrase&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;projectUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;orderId&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;projectResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creating a geofence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;createFence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fenceUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/projects/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/fence?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;keyPhrase&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`fence_&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Feature&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="na"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="na"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Point&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="na"&gt;shapeType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Circle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="na"&gt;coordinates&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creating an object for the project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objectUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/objects/object?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;keyPhrase&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objectConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`driver_&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;driverId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;defaultProject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;constructedObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objectUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objectConfig&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we have a geofence. Let’s add an alert rule so when a driver enters the area, we can send an email to the customer.&lt;/p&gt;

&lt;p&gt;Let us first create a notification group for a customer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getNotificationGroup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`https://api.tomtom.com/notifications/1/groups?key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customerContact&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getCustomerContact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;orderId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;customerContact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notificationGroup&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;customerContact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notificationGroup&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// if customer does not already have a notification group, &lt;/span&gt;

    &lt;span class="c1"&gt;//execute the following,       else&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;notificationResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;customerContact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// if web hooks are available, we can use webhooks&lt;/span&gt;
        &lt;span class="c1"&gt;// webhookUrls:[]&lt;/span&gt;
        &lt;span class="na"&gt;emails&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;customerContact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;]}));&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;notification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;notificationResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;notification&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a notification group, we can create an alert that connects the object (driver), the geofence, and the customer.&lt;/p&gt;

&lt;p&gt;When the object (driver) is in the area (entering the geofence), an alert will trigger and notify the customer (via the notification group).&lt;/p&gt;

&lt;p&gt;Note there is a different set of alertRuleConstraints for each of the alert types. For TRANSITION alerts, transitionType is required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;alertConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// create a unique name for the alert&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`alert_&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;objectConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_t`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;fence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;constructedFence&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;alertType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;TRANSITION&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;alertRuleConstraints&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt; &lt;span class="na"&gt;transitionType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ENTER&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;constructedObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;notificationGroup&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;notificationGroup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To create a dwelling alert, simply replace alertType and alertRuleConstraints like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;alertConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`alert_&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;objectConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_d`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;alertConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alertType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DWELL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// 60 seconds * 5 = 5 minutes&lt;/span&gt;
&lt;span class="nx"&gt;alertConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alertRuleConstraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxDwellTime&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dwellingAlert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;alertUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;alertConfig&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will send out an alert if the driver stays within the fence for more than five minutes.&lt;/p&gt;

&lt;p&gt;Now we have two alerts set up for the geofence. All we need is someone to trigger it. We still need a way for a driver to report their GPS locations to trigger these alerts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;reportPosition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;driverId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;baseUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.tomtom.com/geofencing/1/report&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;point&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objectId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getDriver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;driverId&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;objectId&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?point=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;point&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;object=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;objectId&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Next Steps
&lt;/h1&gt;

&lt;p&gt;We have explored how to create an API endpoint to provide routing information for a delivery service using TomTom Map APIs.&lt;/p&gt;

&lt;p&gt;Using a combination of the search, routing and geofencing API. We can provide timely route information to both the driver and customer.&lt;/p&gt;

&lt;p&gt;Its routing API calculates the best route using both historical and live traffic data, providing reliable estimates while the powerful Geofencing API allows an app to respond to entry, exits, and dwelling events through alert rules.&lt;/p&gt;

&lt;p&gt;There are still a few things left that we can do to improve this app.&lt;/p&gt;

&lt;p&gt;For example, you can use the Geofence API to &lt;a href="https://developer.tomtom.com/geofencing-api/geofencing-api-documentation/get-objects-count-fence"&gt;get a number of objects within a geofence&lt;/a&gt; or the &lt;a href="https://developer.tomtom.com/geofencing-api/geofencing-api-documentation-transitions-service/get-objects-transitions"&gt;number of transitions that have happened for a given object&lt;/a&gt; to monitor the current status of the object (driver).&lt;/p&gt;

&lt;p&gt;There are opportunities to cache the project and geofence information to improve the performance of the app.&lt;/p&gt;

&lt;p&gt;There are many parameters available for each of the API calls. Check out the documentation and the API Explorers at &lt;a href="https://developer.tomtom.com/"&gt;TomTom Developers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to get started? &lt;a href="https://developer.tomtom.com/"&gt;Sign up for a free developer account&lt;/a&gt; and connect with TomTom Developers on &lt;a href="https://www.twitter.com/tomtomdevs"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.youtube.com/channel/UCL-ZtGd70Khd_9OJACd6rXA"&gt;YouTube&lt;/a&gt;, and &lt;a href="https://www.reddit.com/r/tomtom/"&gt;Reddit&lt;/a&gt; for more tutorials.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article originally appeared on &lt;a href="https://developer.tomtom.com/blog"&gt;https://developer.tomtom.com/blog&lt;/a&gt;. The original author is Stanley Wu.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>javascript</category>
      <category>api</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Twitch Recap: Q&amp;A on How Traffic is made!</title>
      <dc:creator>Olivia Vahsen 🥑 🦄</dc:creator>
      <pubDate>Fri, 18 Dec 2020 22:53:05 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/twitch-recap-q-a-on-how-traffic-is-made-2fpm</link>
      <guid>https://forem.com/tomtomdevs/twitch-recap-q-a-on-how-traffic-is-made-2fpm</guid>
      <description>&lt;p&gt;Hey everyone! Here I'll be recapping our last TomTomDevs Twitch stream of the year, which was this Tuesday! Check out the full recap &lt;a href="https://www.twitch.tv/videos/838516180"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This episode was a little different, as instead of a purely coding tutorial, we decided to get a bit more open-ended and bring up some important questions about working with traffic. We didn't go it alone, however -- we brought in reinforcements, aka TomTom Product Marketing Manager, Jonathan Americo!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1xk0vx70y2r82fqkkwrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1xk0vx70y2r82fqkkwrn.png" alt="Alt Text" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Featuring some of the traffic facts shown above, the world has seen massive changes in traffic patterns this year, which is why we answered some key questions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can we fool TomTom traffic with a bucket of phones?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In short, you actually can't! Phones are able to send nuanced indications of movement, so we can tell if a phone is moving only a few inches at a time, or is extremely close together. One might indicate a pedestrian, and the other a carful of people - neither of which are individual traffic points.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Will COVID-19's wild outlier traffic patterns influence historical traffic profiles of roads and road segments?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a good one! 2020's lack of traffic is definitely a part of history - and so, we are working on ways to ensure that it is differentiated in such a way, such as creating a short-term historical view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo0i6ngp3sovmj1o6mdlo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo0i6ngp3sovmj1o6mdlo.png" alt="Alt Text" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more questions and answers, watch our recap, and otherwise... Happy Holidays, and Happy Mapping!&lt;/p&gt;

</description>
      <category>techtalks</category>
      <category>wecoded</category>
      <category>codenewbie</category>
      <category>bigdata</category>
    </item>
    <item>
      <title>Live on Twitch: Q&amp;A - How is Traffic Made? 12/15 @ 12pm PT</title>
      <dc:creator>Ruanna</dc:creator>
      <pubDate>Tue, 15 Dec 2020 20:18:13 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/live-now-on-twitch-q-a-how-is-traffic-made-12-15-12pm-pt-2fk7</link>
      <guid>https://forem.com/tomtomdevs/live-now-on-twitch-q-a-how-is-traffic-made-12-15-12pm-pt-2fk7</guid>
      <description>&lt;p&gt;Visit &lt;a href="https://www.twitch.tv/tomtomdevs"&gt;https://www.twitch.tv/tomtomdevs&lt;/a&gt; to learn all about how traffic is made! In this Q&amp;amp;A, we'll be discussing the inner workings of traffic, and how traffic data can help developers build innovative projects.&lt;/p&gt;

&lt;p&gt;If you're a dev working with location tech or want to learn more about traffic data and how you can use it in your web or mobile apps, join us here! &lt;a href="https://twitch.tv/tomtomdevs"&gt;https://twitch.tv/tomtomdevs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dev advocate Olivia Vahsen wrote a nifty recap here on DEV – check out it here: &lt;a href="https://dev.to/tomtomdevs/twitch-recap-q-a-on-how-traffic-is-made-2fpm"&gt;https://dev.to/tomtomdevs/twitch-recap-q-a-on-how-traffic-is-made-2fpm&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>datascience</category>
      <category>womenintech</category>
      <category>wecoded</category>
    </item>
    <item>
      <title>Twitch Recap: Building a Small-Service Delivery App!</title>
      <dc:creator>Olivia Vahsen 🥑 🦄</dc:creator>
      <pubDate>Tue, 08 Dec 2020 15:29:39 +0000</pubDate>
      <link>https://forem.com/tomtomdevs/twitch-recap-building-a-small-service-delivery-app-2c0g</link>
      <guid>https://forem.com/tomtomdevs/twitch-recap-building-a-small-service-delivery-app-2c0g</guid>
      <description>&lt;p&gt;Last week on Twitch, we did something a little different! As we've grown our channel, we wanted to experiment with doing two shorter streams instead of our regular long session. You can find the links to &lt;a href="https://www.twitch.tv/videos/829999433"&gt;part 1&lt;/a&gt; and &lt;a href="https://www.twitch.tv/videos/829990886"&gt;part 2&lt;/a&gt; here!&lt;/p&gt;

&lt;p&gt;Originally, Jose and I presented a demo of this sample project at the recent virtual WeAreDevelopers conference in Vienna. We had a great time and wanted to break down these components for our Twitch audience.&lt;/p&gt;

&lt;p&gt;In general, this project focused on the differences between creating multi-stop routing based on optimal speed vs. based on optimal distance, taking real-time traffic into consideration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnl3uuuva8y2f49pu3xnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnl3uuuva8y2f49pu3xnf.png" alt="Alt Text" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In part one, we focused specifically on the principles behind optimal "shortest path" finding, and explained the TSP (Traveling Salesman Problem). &lt;/p&gt;

&lt;p&gt;TSP is familiar to many engineers for its lack of a universal solution - its one mathematical concept which can only be solved by a high-speed check of all possible path options.&lt;/p&gt;

&lt;p&gt;When "paths" need to be mapped onto real-life roads, it introduces a whole new set of factors that TSP isn't responsible for - road closures, accidents, winding turns, and daily congestion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpvt2jl86i0oq0rcvzzgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpvt2jl86i0oq0rcvzzgc.png" alt="Alt Text" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this project specifically, we used the nearest neighbor algorithm to help us marry a need for optimal delivery stops along our route, along with our optimal route calculations. Each route could be calculated with a priority of either the shortest speed or the shortest total distance. These are often not the same!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcggmnpgyapbmt5ztojl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcggmnpgyapbmt5ztojl5.png" alt="Alt Text" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In part two, we used topics from one of our last devisodes to create radial geofences around each delivery waypoint on our route. This would allow us to later use the Notifications API to alert our recipient when their delivery is close to arriving.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs6uvlp0uxtnzcqahhy2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs6uvlp0uxtnzcqahhy2t.png" alt="Alt Text" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By using a webhook connecting to MS Teams, we were able to view notifications of when our delivery car arrived in and out of the geofence, or dwelled there for a certain number of seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9t0y3ivsx7eipud6j8og.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9t0y3ivsx7eipud6j8og.png" alt="Alt Text" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be sure to catch our Q&amp;amp;A on Traffic next week, Dec 15th at 12pm PST! &lt;/p&gt;

</description>
      <category>techtalks</category>
      <category>wecoded</category>
      <category>algorithms</category>
      <category>html</category>
    </item>
  </channel>
</rss>
