{"id":2622922,"date":"2024-12-12T14:58:48","date_gmt":"2024-12-12T22:58:48","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2622922"},"modified":"2024-12-13T03:06:04","modified_gmt":"2024-12-13T11:06:04","slug":"map-vehicle-meeting-points-flutter","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter","title":{"rendered":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter"},"author":10242,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191],"tags":[768202,776092,35001,773362,757131],"industry":[],"product":[761642,776202,36861],"class_list":["post-2622922","blog","type-blog","status-publish","format-standard","hentry","category-developers","tag-arcgis-maps-sdks-for-native-apps","tag-flutter-maps-sdk","tag-mobile-development","tag-native-development","tag-routing-services","product-platform","product-sdk-flutter","product-api-rest"],"acf":{"authors":[{"ID":10242,"user_firstname":"Rachael","user_lastname":"Ellen","nickname":"Rachael Ellen","user_nicename":"rellen","display_name":"Rachael Ellen","user_email":"rellen@esri.com","user_url":"https:\/\/dev.to\/rachaele\/","user_registered":"2019-11-29 11:58:45","user_description":"Rachael is a senior product engineer in the Developer Outreach team for the ArcGIS Maps SDKs for Native Apps. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with the Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and talks.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"short_description":"Learn how to use the ArcGIS Maps SDK for Flutter to build an app that maps vehicle meeting points for improved journey planning and efficiency.","flexible_content":[{"acf_fc_layout":"content","content":"<p style=\"text-align: center;\"><em>The <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/announcements\/introducing-the-arcgis-maps-sdk-for-flutter\/\">new ArcGIS Maps SDK for Flutter<\/a> is a powerful tool for developers to build cross-platform mobile applications that solve real-world geospatial challenges. Whether you\u2019re planning routes, visualizing data, or tackling location specific problems, the Flutter Maps SDK enables you to create interactive apps with ease. In this blog, I\u2019ll share how I built a handy mobile app that maps vehicle meeting points to improve journey efficiency and allow better journey planning.<\/em><\/p>\n<p>On a recent holiday, I had an idea for an app that I could use to calculate the meeting point between two vehicles travelling toward each other along a single-track main road. This idea is location specific to the Isle of Mull, Scotland, where driving back eastward toward the ferry terminal, you often encounter large buses travelling toward you that have picked passengers up off the ferry. This can lead to difficult passing conditions depending on where you meet them (e.g. areas with sparse passing places, blind bends in the road). Knowing where you are likely to encounter them is beneficial for journey planning and efficiency \u2013 and can save some stress!<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623222,"id":2623222,"title":"BusOnRoadPano","filename":"BusOnRoadPano.jpg","filesize":131754,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/busonroadpano","alt":"","author":"10242","description":"","caption":"Single-track roads pose a unique situation where heavy oncoming traffic, such as buses, can pose logistical challenges for passing safely.","name":"busonroadpano","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 19:32:59","modified":"2024-12-12 19:33:27","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":810,"height":365,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","medium-width":464,"medium-height":209,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","medium_large-width":768,"medium_large-height":346,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","large-width":810,"large-height":365,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","1536x1536-width":810,"1536x1536-height":365,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","2048x2048-width":810,"2048x2048-height":365,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","card_image-width":810,"card_image-height":365,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/BusOnRoadPano.jpg","wide_image-width":810,"wide_image-height":365}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Throughout this blog I\u2019ll walk through the process of how I created this ferry traffic helper mobile app using the Flutter Maps SDK. I\u2019ll share how to combine custom logic calculations to determine where two vehicles will meet based on the route travelled, ferry timetable, and vehicle time of departure provided by user input. I\u2019ll also cover how to set up graphics overlays and renderers to display this information in a dynamic and interactive app.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623152,"id":2623152,"title":"FerryTrafficCombined2","filename":"FerryTrafficCombined2.png","filesize":2888309,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferrytrafficcombined2","alt":"Three mobile phone screens, displaying a list of locations, a map, and a confirmation screen.","author":"10242","description":"","caption":"Ferry Traffic Helper app, built with the ArcGIS Maps SDK for Flutter","name":"ferrytrafficcombined2","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 18:48:10","modified":"2024-12-12 21:56:39","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":3318,"height":2475,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2.png","medium-width":350,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2.png","medium_large-width":768,"medium_large-height":573,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2.png","large-width":1448,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2-1536x1146.png","1536x1536-width":1536,"1536x1536-height":1146,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2-2048x1528.png","2048x2048-width":2048,"2048x2048-height":1528,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2-623x465.png","card_image-width":623,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficCombined2-1448x1080.png","wide_image-width":1448,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><em>For this blog I\u2019ll share an overview of the key steps required to configure the app, followed by relevant code snippets. I\u2019ve simplified and shortened \u00a0these for the purposes of the blog \u2013 the best place to view the completed code in full context is on my\u00a0<\/em><a href=\"https:\/\/github.com\/Rachael-E\/ferry_traffic_helper\/\"><em>GitHub repo<\/em><\/a><em>.<\/em><\/p>\n<h3>Install ArcGIS Maps SDK for Flutter<\/h3>\n<p>First, you\u2019ll need to install the Flutter Maps SDK and sign up for an API key if you don\u2019t already have one (essential for authenticating routing and mapping services). Learn how to do this on the <a href=\"https:\/\/developers.arcgis.com\/flutter\/get-started\/\">Get Started<\/a> doc pages.<\/p>\n<h3>Add a basemap and graphics overlays<\/h3>\n<p>Once you have the Flutter Maps SDK installed, follow the steps in the <a href=\"https:\/\/developers.arcgis.com\/flutter\/maps-2d\/tutorials\/display-a-map\/\">Display a Map tutorial<\/a> to build an app that imports the <em>arcgis_maps<\/em> package, sets an API key and displays a map. The map provides the spatial context for the data to be shown, and the viewpoint can be set to a location of your choice \u2013 for this app, set up so the map loads over the Isle of Mull.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623312,"id":2623312,"title":"FerryTrafficMap35","filename":"FerryTrafficMap35.png","filesize":167972,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferrytrafficmap35","alt":"A mobile phone screen displaying a map centred over the Isle of Mull","author":"10242","description":"","caption":"The app is configured with a topographic basemap centred on the Isle of Mull, Scotland","name":"ferrytrafficmap35","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 19:54:30","modified":"2024-12-12 21:58:20","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":281,"height":566,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","medium-width":130,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","medium_large-width":281,"medium_large-height":566,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","large-width":281,"large-height":566,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","1536x1536-width":281,"1536x1536-height":566,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","2048x2048-width":281,"2048x2048-height":566,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35-231x465.png","card_image-width":231,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficMap35.png","wide_image-width":281,"wide_image-height":566}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Next, set up and add three graphics overlays with renderers to the map view controller to prepare to display the route, stops, and meeting point data on the map. For the route overlay, set a <a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/SimpleLineSymbol-class.html\">SimpleLineSymbol<\/a> with a dashed style as the renderer. For the stops overlay, which will mark the location of the ferry terminal (vehicle destination) and the point of vehicle departure, use a <a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/PictureMarkerSymbol\/PictureMarkerSymbol.withImage.html\">PictureMarkerSymbol.withImage<\/a> with a pin image. Finally for the meeting point overlay, use another picture marker symbol with an image of a bus (a fun way to show where you might encounter a convoy of ferry related buses!).<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/Rachael-E\/54327522a0ac6c09528874ca2286efc8.pibb\">https:\/\/gist.github.com\/Rachael-E\/54327522a0ac6c09528874ca2286efc8.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Calculate the route<\/h3>\n<p>To calculate where two vehicles travelling toward each other will meet, we first need the geometry of the road between them. This road is a particularly easy one to manage, as there is only one possible route that can run between the two vehicles as there is only one road! We can easily generate the route geometry as a polyline using the <a href=\"https:\/\/developers.arcgis.com\/rest\/routing\/\">ArcGIS Routing service<\/a> by adding the ferry terminal as a stop (as this is always where the ferry traffic will be departing from), and also a user defined vehicle departure point as a stop.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623622,"id":2623622,"title":"FerryTrafficRoute2","filename":"FerryTrafficRoute2.png","filesize":223957,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferrytrafficroute2","alt":"A mobile phone screen displaying a map with a route drawn in a black dashed line.","author":"10242","description":"","caption":"The road between the ferry terminal (to the east) and the end of the road (to the west) is drawn using the ArcGIS Routing service, styled with a black dashed line","name":"ferrytrafficroute2","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 21:17:16","modified":"2024-12-12 22:06:53","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":325,"height":655,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","medium-width":130,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","medium_large-width":325,"medium_large-height":655,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","large-width":325,"large-height":655,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","1536x1536-width":325,"1536x1536-height":655,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","2048x2048-width":325,"2048x2048-height":655,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2-231x465.png","card_image-width":231,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficRoute2.png","wide_image-width":325,"wide_image-height":655}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>First, initialize the routing service by setting up a <a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/RouteTask-class.html\">RouteTask<\/a> with the request URL. Then create default parameters on the route task by setting the stops and then solving the route asynchronously. Once the route geometry has been returned, add it to the route graphics overlay.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/Rachael-E\/839917f5ffc117213d290886186aaf76.pibb\">https:\/\/gist.github.com\/Rachael-E\/839917f5ffc117213d290886186aaf76.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Add custom logic to map vehicle meeting points<\/h3>\n<p>Now we have the map, graphics overlays and routing set up, we can calculate the vehicle meeting points. The logic relies on vehicle speeds, ferry schedule and route geometry to determine the meeting point. To keep things simple, we\u2019ll call the traffic coming from the ferry terminal <strong>the bus<\/strong>, and the vehicle driving toward the ferry terminal <strong>the car<\/strong>.<\/p>\n<p>First, I store the ferry schedule in a separate class and use that to store valid ferry arrival times (coincident with bus departure time) that could coincide with the car departing. Then I calculate the time difference in hours between the bus and the car starting their journeys (car delay relative to ferry arrival times) and store their relative speeds. I have assumed the vehicle speeds will be constant for the purposes of this app (50km\/hr for the bus, 60km\/hr for the car). Then using the route geometry length, I calculate the distance the vehicles will meet using:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623542,"id":2623542,"title":"MeetingEquation","filename":"MeetingEquation.png","filesize":24772,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/meetingequation","alt":"","author":"10242","description":"","caption":"","name":"meetingequation","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 20:56:57","modified":"2024-12-12 20:56:57","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":904,"height":116,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation-213x116.png","thumbnail-width":213,"thumbnail-height":116,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","medium-width":464,"medium-height":60,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","medium_large-width":768,"medium_large-height":99,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","large-width":904,"large-height":116,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","1536x1536-width":904,"1536x1536-height":116,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","2048x2048-width":904,"2048x2048-height":116,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation-826x106.png","card_image-width":826,"card_image-height":106,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/MeetingEquation.png","wide_image-width":904,"wide_image-height":116}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>After calculating the meeting point distance, I add checks to ensure the result is valid by confirming the meeting point is within the route geometry. If the result is less than the route geometry length, it means the bus will have already passed through the route and the car won\u2019t meet it. Similarly, if the result is 0 or negative, it means the bus hasn\u2019t left yet and the car will complete its journey before encountering the bus. I then use the <a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/GeometryEngine-class.html\">GeometryEngine<\/a> API in the Flutter Maps SDK to create a point along the route geometry using the distance to meet and I add that to the map as a graphic on the meeting point graphics overlay.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/Rachael-E\/892381a6d730c89361f7f46a7e1243ff.pibb\">https:\/\/gist.github.com\/Rachael-E\/892381a6d730c89361f7f46a7e1243ff.pibb<\/a>"},{"acf_fc_layout":"content","content":"<p>And that\u2019s it in terms of logic to set up the app! We\u2019ve used the Flutter Maps SDK to display a map, display graphics, calculate routes, and carry out a spatial operation that shows where two vehicles travelling toward each other will meet each other.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2623612,"id":2623612,"title":"FerryTrafficResult2","filename":"FerryTrafficResult2.png","filesize":261951,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferrytrafficresult2","alt":"A mobile phone screen displaying a route with two bus icons part ways along it.","author":"10242","description":"","caption":"The meeting points of the bus and the car are drawn as bus icons along the route, their positions calculated using the GeometryEngine API","name":"ferrytrafficresult2","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 21:16:21","modified":"2024-12-12 22:13:27","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":325,"height":655,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","medium-width":130,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","medium_large-width":325,"medium_large-height":655,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","large-width":325,"large-height":655,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","1536x1536-width":325,"1536x1536-height":655,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","2048x2048-width":325,"2048x2048-height":655,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2-231x465.png","card_image-width":231,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficResult2.png","wide_image-width":325,"wide_image-height":655}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Build the user interface<\/h3>\n<p>All that remains is to build the app\u2019s UI using Flutter widgets. Flutter makes it straight forward to build user-friendly UIs that work well with the Flutter Maps SDK, especially using the hot reload feature to fine-tune designs quickly.<\/p>\n<p>For this app I opt for two simple interactive <a href=\"https:\/\/api.flutter.dev\/flutter\/material\/ElevatedButton-class.html\">ElevatedButton<\/a>s to allow a user to select their departure time, or to clear the graphics layers on the map. Flutter provides a wide range of built-in <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/Icon-class.html\">Icon<\/a>s that can be applied to UI elements for a minimal app design. \u00a0I use Flutter\u2019s <a href=\"https:\/\/api.flutter.dev\/flutter\/material\/showTimePicker.html\">showTimePicker<\/a> to allow users to select a departure time, and then build a custom dialog to display a list of possible departure locations for the user to select. Finally, I create a final custom dialog that confirms the user inputs and calculates the result once confirmed.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/Rachael-E\/dc7a3e081b6e8ebb059610bbe5b4fc88.pibb\">https:\/\/gist.github.com\/Rachael-E\/dc7a3e081b6e8ebb059610bbe5b4fc88.pibb<\/a>"},{"acf_fc_layout":"image","image":{"ID":2623482,"id":2623482,"title":"FerryUI","filename":"FerryUI.png","filesize":2200274,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferryui","alt":"Three mobile screens showing a time picker dialog, a list of departure locations, and a confirmation screen.","author":"10242","description":"","caption":"The user interface of the app starts with the user tapping a button to bring up a time picker dialog, followed by departure location selection, and a final confirmation dialog.","name":"ferryui","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 20:48:59","modified":"2024-12-12 22:14:56","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":3685,"height":2475,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI.png","medium-width":389,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI.png","medium_large-width":768,"medium_large-height":516,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI.png","large-width":1608,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI-1536x1032.png","1536x1536-width":1536,"1536x1536-height":1032,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI-2048x1376.png","2048x2048-width":2048,"2048x2048-height":1376,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI-692x465.png","card_image-width":692,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryUI-1608x1080.png","wide_image-width":1608,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Summary<\/h3>\n<p>I\u2019ve shown you how to build a simple mobile app with the Flutter Maps SDK that determines where you&#8217;d encounter traffic travelling toward you along a single-track road. By integrating ferry schedules with vehicle speeds and route geometry, the app delivers precise and fast insights for where the meeting point occurs. This allows the user better insights into their journey and being more aware of when they may encounter heavier traffic than usual on their journey, or, being able to plan to avoid it.<\/p>\n<p>This is just the beginning for this type of app! You could adapt or extend this app to various scenarios using further ArcGIS capabilities within the Flutter Maps SDK, such as adding more routes, account for different modes of transport, allow users to enter precise departure locations and build in offline workflows.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2624192,"id":2624192,"title":"FerryTrafficGif","filename":"FerryTrafficGif.gif","filesize":4357051,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\/ferrytrafficgif","alt":"Short demo of the app in action, showing a user tapping on a button to start adding information to the app. The result displays on the map.","author":"10242","description":"","caption":"Once the user has selected a departure time and location, the route calculates and the meeting point(s) display on the map. This allows the user instant insight into where along the road they may encounter ferry traffic","name":"ferrytrafficgif","status":"inherit","uploaded_to":2622922,"date":"2024-12-12 22:40:38","modified":"2024-12-13 11:05:11","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":321,"height":644,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","medium-width":130,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","medium_large-width":321,"medium_large-height":644,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","large-width":321,"large-height":644,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","1536x1536-width":321,"1536x1536-height":644,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","2048x2048-width":321,"2048x2048-height":644,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif-232x465.gif","card_image-width":232,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryTrafficGif.gif","wide_image-width":321,"wide_image-height":644}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>What next?<\/h3>\n<p>I hope this mini project has inspired you to create your own Flutter Maps SDK apps to solve your own geospatial puzzles!<\/p>\n<p>You can start building ArcGIS powered apps today by signing up for a <a href=\"https:\/\/location.arcgis.com\/sign-up\/\">free ArcGIS Location Platform account<\/a>. Once you have an account and have generated an API key, you can import the <em>arcgis_maps<\/em> package from <a href=\"https:\/\/pub.dev\/packages\/arcgis_maps\">pub.dev<\/a> to start building your Flutter Maps SDK app. Check out the <a href=\"https:\/\/github.com\/Esri\/arcgis-maps-sdk-flutter-samples\">ArcGIS Maps SDK for Flutter sample code repo<\/a> for more inspiration, and let us know your feedback and what apps you&#8217;re building on our new <a href=\"https:\/\/community.esri.com\/t5\/flutter-maps-sdk-questions\/bd-p\/flutter-maps-sdk-questions\">Esri Community Flutter Maps SDK forum<\/a>.<\/p>\n<p>If you\u2019d like to view the source code and\/or give this app a try for yourself, you can find it\u00a0<a href=\"https:\/\/github.com\/Rachael-E\/ferry_traffic_helper\/\">here on GitHub<\/a>. I\u2019ll be ground truthing this app on my next holiday to the Isle of Mull!<\/p>\n"}],"related_articles":[{"ID":2451632,"post_author":"10242","post_date":"2024-08-08 06:27:44","post_date_gmt":"2024-08-08 13:27:44","post_content":"","post_title":"Mapping where coffee comes from with the Flutter Maps SDK beta","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"mapping-coffee-flutter-maps-sdk","to_ping":"","pinged":"","post_modified":"2024-08-09 07:05:28","post_modified_gmt":"2024-08-09 14:05:28","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2451632","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2600092,"post_author":"3811","post_date":"2024-11-25 07:55:15","post_date_gmt":"2024-11-25 15:55:15","post_content":"","post_title":"Introducing the ArcGIS Maps SDK for Flutter","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"introducing-the-arcgis-maps-sdk-for-flutter","to_ping":"","pinged":"","post_modified":"2024-11-26 11:40:30","post_modified_gmt":"2024-11-26 19:40:30","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2600092","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"show_article_image":false,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/FerryCard.png","wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to map vehicle meeting points using ArcGIS Maps SDK for Flutter<\/title>\n<meta name=\"description\" content=\"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter\" \/>\n<meta property=\"og:description\" content=\"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-13T11:06:04+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\"},\"author\":{\"name\":\"Rachael Ellen\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd\"},\"headline\":\"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter\",\"datePublished\":\"2024-12-12T22:58:48+00:00\",\"dateModified\":\"2024-12-13T11:06:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\"},\"wordCount\":12,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS Maps SDKs for Native Apps\",\"Flutter Maps SDK\",\"mobile development\",\"native development\",\"routing services\"],\"articleSection\":[\"Developers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\",\"name\":\"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2024-12-12T22:58:48+00:00\",\"dateModified\":\"2024-12-13T11:06:04+00:00\",\"description\":\"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd\",\"name\":\"Rachael Ellen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg\",\"caption\":\"Rachael Ellen\"},\"description\":\"Rachael is a senior product engineer in the Developer Outreach team for the ArcGIS Maps SDKs for Native Apps. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with the Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and talks.\",\"sameAs\":[\"https:\/\/dev.to\/rachaele\/\",\"https:\/\/www.linkedin.com\/in\/rachael-ellen-8a852729\/\",\"https:\/\/x.com\/Geolocoder\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","description":"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter","og_locale":"en_US","og_type":"article","og_title":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","og_description":"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-12-13T11:06:04+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter"},"author":{"name":"Rachael Ellen","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd"},"headline":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","datePublished":"2024-12-12T22:58:48+00:00","dateModified":"2024-12-13T11:06:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter"},"wordCount":12,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS Maps SDKs for Native Apps","Flutter Maps SDK","mobile development","native development","routing services"],"articleSection":["Developers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter","name":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2024-12-12T22:58:48+00:00","dateModified":"2024-12-13T11:06:04+00:00","description":"Learn how to use the ArcGIS Maps SDK for Flutter to build a cross-platform mobile app that maps vehicle meeting points.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/map-vehicle-meeting-points-flutter#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd","name":"Rachael Ellen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg","caption":"Rachael Ellen"},"description":"Rachael is a senior product engineer in the Developer Outreach team for the ArcGIS Maps SDKs for Native Apps. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with the Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and talks.","sameAs":["https:\/\/dev.to\/rachaele\/","https:\/\/www.linkedin.com\/in\/rachael-ellen-8a852729\/","https:\/\/x.com\/Geolocoder"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen"}]}},"text_date":"December 12, 2024","author_name":"Rachael Ellen","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Maps SDK for Flutter","tag_data":[{"term_id":768202,"name":"ArcGIS Maps SDKs for Native Apps","slug":"arcgis-maps-sdks-for-native-apps","term_group":0,"term_taxonomy_id":768202,"taxonomy":"post_tag","description":"","parent":0,"count":30,"filter":"raw"},{"term_id":776092,"name":"Flutter Maps SDK","slug":"flutter-maps-sdk","term_group":0,"term_taxonomy_id":776092,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"},{"term_id":35001,"name":"mobile development","slug":"mobile-development","term_group":0,"term_taxonomy_id":35001,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"},{"term_id":773362,"name":"native development","slug":"native-development","term_group":0,"term_taxonomy_id":773362,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"},{"term_id":757131,"name":"routing services","slug":"routing-services","term_group":0,"term_taxonomy_id":757131,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":426,"filter":"raw"}],"product_data":[{"term_id":761642,"name":"ArcGIS Location Platform","slug":"platform","term_group":0,"term_taxonomy_id":761642,"taxonomy":"product","description":"","parent":36601,"count":215,"filter":"raw"},{"term_id":776202,"name":"ArcGIS Maps SDK for Flutter","slug":"sdk-flutter","term_group":0,"term_taxonomy_id":776202,"taxonomy":"product","description":"","parent":36601,"count":19,"filter":"raw"},{"term_id":36861,"name":"ArcGIS REST API","slug":"api-rest","term_group":0,"term_taxonomy_id":36861,"taxonomy":"product","description":"","parent":36601,"count":75,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=sdk-flutter","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2622922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/10242"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2622922"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2622922\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2622922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2622922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2622922"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2622922"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2622922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}