{"id":2934511,"date":"2025-08-27T08:30:39","date_gmt":"2025-08-27T15:30:39","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2934511"},"modified":"2025-08-27T09:21:48","modified_gmt":"2025-08-27T16:21:48","slug":"find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","title":{"rendered":"Find walking routes through urban green spaces with Flutter Maps SDK"},"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":[780795,215372,773362,30971,780796],"industry":[],"product":[761642,776202,36561,36601],"class_list":["post-2934511","blog","type-blog","status-publish","format-standard","hentry","category-developers","tag-custom-routing","tag-mobile-applications","tag-native-development","tag-network-dataset","tag-walking-routes","product-platform","product-sdk-flutter","product-arcgis-pro","product-developers"],"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 Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.\r\n","flexible_content":[{"acf_fc_layout":"content","content":"<p style=\"text-align: center;\"><em>We all know that walking through a park beats a busy road any day \u2013 but what if your mobile <\/em>\u00a0<em>device knew that too? Well it can with an app built using Flutter Maps SDK! \u00a0In this blog I\u2019ll walk you through how I prototyped a custom routing mobile app that finds walking routes through urban green spaces instead of just the fastest path.<\/em><\/p>\n<hr \/>\n<p>On my commute to work, I\u2019m often struck by how grey and concrete the route feels. For a city as green as Edinburgh, I wondered \u2013 what if my phone could guide me along the greenest walking route instead of the shortest route as usual?<\/p>\n<p>That thought led me to build a custom routing app using ArcGIS Pro to author a custom network dataset and the ArcGIS Maps SDK for Flutter (Flutter Maps SDK) to solve routes (including geocoding for finding origin and destination addresses). Instead of optimizing for speed and directness like with typical routing solutions, it finds alternative walking routes through urban green spaces (which for me optimizes wellbeing and opportunities to enjoy nature)!<\/p>\n<p>Let\u2019s walk through building out this functionality of finding a greener walk together. I\u2019ll show you how a customized network dataset can bring alternative routing options directly to your pocket and help bring an appreciation of nature into the city &#8211; often in places you\u2019d never expect!<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2937322,"id":2937322,"title":"GreenspacePhotos","filename":"GreenspacePhotos.png","filesize":1574096,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\/greenspacephotos","alt":"A photograph of a mobile phone in a person's hand displaying a map with routing options, alongside photographs of typical urban greenspace scenes.","author":"10242","description":"","caption":"An example of the custom routing app in action, displaying alternative routes through the city. Urban green spaces can range from parks with vibrant berries and fragrant lime tree avenues to water ways with ducks paddling and a more peaceful walking route.","name":"greenspacephotos","status":"inherit","uploaded_to":2934511,"date":"2025-08-26 15:54:34","modified":"2025-08-26 18:15:58","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":1040,"height":578,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","medium-width":464,"medium-height":258,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","medium_large-width":768,"medium_large-height":427,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","large-width":1040,"large-height":578,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","1536x1536-width":1040,"1536x1536-height":578,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","2048x2048-width":1040,"2048x2048-height":578,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos-826x459.png","card_image-width":826,"card_image-height":459,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacePhotos.png","wide_image-width":1040,"wide_image-height":578}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>In this blog I\u2019ll go through the key steps* of how to use ArcGIS Pro combined with the <a href=\"https:\/\/developers.arcgis.com\/flutter\/\">Flutter Maps SDK<\/a> to build a mobile app capable of routing users preferentially through green spaces. \u00a0I\u2019ll share how I:<\/p>\n<ul>\n<li>Authored a customized network dataset capable of routing preferentially through urban green spaces in ArcGIS Pro<\/li>\n<li>Packaged the network dataset as a mobile map package for use in a Flutter Maps SDK app<\/li>\n<li>Configured the Flutter Maps SDK app to display routing results<\/li>\n<li>Enhanced the user experience by adding geocoding functionality<\/li>\n<li>Enabled users to compare the greenest and shortest walks to optimize their time in green space as they go about their day.<\/li>\n<\/ul>\n<p><em>*Note, this is intended as a high-level overview of the key tools, workflows and code rather than a step by step follow-along process. You can check out the Flutter Maps SDK \u00a0code for this app on my <a href=\"https:\/\/github.com\/Rachael-E\/edinburgh_greenspaces_router\">GitHub repo<\/a> if you want to try it out yourself or use the code for inspiration in your own projects.<\/em><\/p>\n<h2>Part I \u2013 Working in ArcGIS Pro to create network dataset capable of routing through green space<\/h2>\n<p>Given that my end goal was to build a Flutter Maps SDK app capable of solving routes, I needed to create a mobile map package (MMPK) containing the customized network dataset that my app would use to calculate routes. I used ArcGIS Pro to author this MMPK, which involved a few steps of importing, cleaning, and managing the data which I\u2019ll summarize below.<\/p>\n<p>First, I created a feature layer containing green space data of Edinburgh as polygons. I sourced this data from various open-source datasets (including parks, trees, the river and the canal) and merged them into a single polygon. Next, I created a feature layer containing routes in Edinburgh (imported as polylines). This was also sourced from open source data, including data on roads and paths. I then added a buffer zone around the green space polygons so that they\u2019d overlap routes to be used for calculating a green score attribute later.<\/p>\n<details>\n<summary><span style=\"color: blue; font-style: bold;\"><span style=\"color: #0000ff;\">\u2295\u00a0*Read more on data&#8230;<\/span><\/span><\/summary>\n<p>&nbsp;<\/p>\n<p>Some important notes on data accuracy here \u2013 for the buffer zone addition, this ensures a tree or green space offset from the road\/path would still be considered for a greener walk. But on the other hand, it would also mean a small tree behind a wall would be considered even if it wasn\u2019t visible. Another important note here &#8211; the polyline data I used for this app wouldn\u2019t be suitable for a production ready app as it doesn\u2019t consider route elevation or check if a route is safe for pedestrians (e.g. if there are pavements, safe crossings etc). It\u2019s intended purely as route inspiration only and for sharing an example of customized routing workflows.<\/p>\n<p>&nbsp;<\/p>\n<\/details>\n"},{"acf_fc_layout":"image","image":{"ID":2937329,"id":2937329,"title":"GreenspacesDataSnapshot","filename":"GreenspacesDataSnapshot.png","filesize":186995,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\/greenspacesdatasnapshot","alt":"A simplified map of a part of Edinburgh, showing green spaces and route networks.","author":"10242","description":"","caption":"Snapshot of the data used for preparing the customized routing functionality. The green polygons reflect urban green space (parks, gardens etc) with the circles representing trees. The blue polylines represent the route network.","name":"greenspacesdatasnapshot","status":"inherit","uploaded_to":2934511,"date":"2025-08-26 17:36:22","modified":"2025-08-26 18:15:16","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":1269,"height":708,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","medium-width":464,"medium-height":259,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","medium_large-width":768,"medium_large-height":428,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","large-width":1269,"large-height":708,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","1536x1536-width":1269,"1536x1536-height":708,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","2048x2048-width":1269,"2048x2048-height":708,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot-826x461.png","card_image-width":826,"card_image-height":461,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/GreenspacesDataSnapshot.png","wide_image-width":1269,"wide_image-height":708}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>I then split the polylines where they intersected the green space polygon so that the polylines segments were contained either within or outside the green space polygon. Then I created a new field on the polyline feature layer and set a green score attribute to each polyline part \u2013 I chose a value of 0.8 for segments within the green space polygon, and 0.5 for the remainder. Through testing different values, I found this range struck the ideal balance of encouraging greener routes without pulling the path too far off course!<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2937331,"id":2937331,"title":"Greenspace_long","filename":"Greenspace_long.png","filesize":594634,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\/greenspace_long","alt":"A simplified map of Edinburgh showing a calculated route.","author":"10242","description":"","caption":"Trial and error - the result of when I overweighted the green score attribute and solved the route which took me the very long (but also very green) way round!","name":"greenspace_long","status":"inherit","uploaded_to":2934511,"date":"2025-08-26 17:38:54","modified":"2025-08-26 17:39: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":823,"height":619,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","medium-width":347,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","medium_large-width":768,"medium_large-height":578,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","large-width":823,"large-height":619,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","1536x1536-width":823,"1536x1536-height":619,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","2048x2048-width":823,"2048x2048-height":619,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long-618x465.png","card_image-width":618,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_long.png","wide_image-width":823,"wide_image-height":619}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>I then created a feature dataset from the polylines (required to then create a <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/how-to-create-a-usable-network-dataset.htm\">network dataset<\/a>, which does the heavy lifting for route analysis and impedance calculations). There are a few steps involved for this crucial step which ultimately underpins the Flutter app\u2019s key functionality:<\/p>\n<p><strong>\u00a0 1.<\/strong> I configured the network dataset with a custom <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/how-to-create-a-usable-network-dataset.htm#ESRI_SECTION1_5600830751F446F584C94D00DD5495D2\">cost attribute<\/a> (calculated using the green score value). Since I chose a higher score for desirable routes, the way the cost attribute calculations work\u00a0 \u00a0 \u00a0 means that higher score would act as a higher penalty when solving routes. So, to guide the routing engine toward greener paths, I used the formula !length! * (1 &#8211; !GreenScore!). This inverts the score so that greener areas (with a higher score) result in a lower cost, making them more attractive to the routing algorithm.<\/p>\n<p><strong>\u00a0 2.<\/strong> Configure <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/how-to-create-a-usable-network-dataset.htm#ESRI_SECTION1_DF362DB92B4D4F4DBE6317207E0FB0A3\">travel modes<\/a> on the network dataset, using the custom cost attribute (\u201cGreenScoreCost\u201d) as impedance. For my app I went for a \u201cWalkGreen\u201d travel mode. I also used a \u201cWalkShortest\u201d travel mode, which used distance as an impedance to find the shortest route.<\/p>\n<p><strong>\u00a0 3.<\/strong> Create a <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/route-analysis-layer.htm\">route analysis layer<\/a> to solve for routes to check it worked as it should.<\/p>\n<p><strong>\u00a0 4.<\/strong>\u00a0Create a <a href=\"https:\/\/developers.arcgis.com\/documentation\/offline-mapping-apps\/fully-offline-apps\/mobile-packages\/#how-to-work-with-mobile-packages\">mobile map package<\/a> (MMPK) containing the network dataset, green space polygon (for displaying in the app), and basemap (for giving context in the app).<\/p>\n<h2>Part II \u2013 Calculate routes in the app built with Flutter Maps SDK<\/h2>\n<p>Now that I had the MMPK, it was time to bring it into my app. MMPKs can be loaded easily by the Flutter Maps SDK (and <a href=\"https:\/\/developers.arcgis.com\/documentation\/offline-mapping-apps\/workflows\/fully-offline\/create-an-app-using-a-mobile-map-package\/\">any of the Native Maps SDKs<\/a> for that matter) and in my app\u2019s case, can be used to display the basemap, green space feature layer, and solve routes using the network dataset. The MMPK can also be used offline, meaning if you didn\u2019t have network signal in the city (unlikely but possible!) the app would still work.<\/p>\n<p>Once I had the MMPK downloaded to my device, I used the following code to load it.<\/p>\n<pre><code><span style=\"color: #d73a49;\">final<\/span> mmpk = MobileMapPackage.withFileUri(mmpkFile.uri);\r\n<span style=\"color: #d73a49;\">await<\/span> mmpk.load();<\/code><\/pre>\n<p>The MMPK contains the basemap* and feature layer as operational layers, and the network dataset as a transportation network dataset. Using the following code, I created a route task with the transportation network dataset and loaded it to access the travel modes (via the route task info) that I set up in ArcGIS Pro.<\/p>\n<p><span style=\"color: #808080;\"><em><strong>*<\/strong>I customized the basemap for this app using the <a style=\"color: #808080;\" href=\"https:\/\/developers.arcgis.com\/vector-tile-style-editor\/\">ArcGIS Vector Tile Style Editor<\/a> to match my app\u2019s green theme.<\/em><\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code>\r\n<span\r\n style=\"color: #d73a49;\">final<\/span> dataset = _map.transportationNetworks.first;\r\n_routeTask = RouteTask.withDataset(dataset);\r\n\r\n<span\r\n style=\"color: #d73a49;\">await<\/span> _routeTask!.load();\r\n<span\r\n style=\"color: #d73a49;\">final<\/span> routeTaskInfo = _routeTask!.getRouteTaskInfo();\r\n\r\n<span\r\n style=\"color: #d73a49;\">final<\/span> travelModes = routeTaskInfo.travelModes;\r\n      \r\n_walkingGreenMode = travelModes.firstWhere(\r\n  (mode) =&gt; mode.name == <span\r\n style=\"color: #032f62;\">&quot;WalkGreen&quot;<\/span>,\r\n);\r\n_walkingShortestMode = travelModes.firstWhere(\r\n   mode) =&gt; mode.name == <span\r\n style=\"color: #032f62;\">&quot;WalkShortest&quot;<\/span>,\r\n);\r\n<\/code><\/pre>\n<p>I then created default parameters for the route task for each travel mode and used the parameters to solve the route using the following code, along with displaying the result on the map as a graphic:<\/p>\n<pre><code>\r\nshortestParams.travelMode = _walkingShortestMode!;\r\n<span\r\n style=\"color: #d73a49;\">final<\/span> shortestResult = <span\r\n style=\"color: #d73a49;\">await<\/span> _routeTask!.solveRoute(shortestParams);\r\n<span\r\n style=\"color: #d73a49;\">final<\/span> shortestRoute = shortestResult.routes.first;\r\n <span\r\n style=\"color: #d73a49;\">final<\/span> routeGeometry = shortestRoute.routeGeometry;\r\n  _shortestRouteOverlay?.graphics.add(Graphic(geometry: routeGeometry));\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3>Adding a geocoding element to the app<\/h3>\n<p>I mentioned before about the offline capabilities of an MMPK. At this stage of my app development, the workflow can be used <a href=\"https:\/\/developers.arcgis.com\/documentation\/offline-mapping-apps\/introduction\/\">fully offline<\/a> if the user has a good understanding of Edinburgh. They could tap anywhere on the map to solve a route between two points without the need for a mobile connection. However, for this app, since the intended use is as inspiration for navigating within a city before leaving home or in a central location, it is likely they\u2019d have access to the internet (and maybe they don\u2019t know Edinburgh like the back of their hand). I therefore \u00a0wanted to build in functionality to give the user a full routing experience including being able to find addresses. I added geocoding and reverse geocoding functionality, so that a user can either type in the address they want to travel from or to, or so that if they tapped the screen, they could see what the address was.<\/p>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<p><em>Note: Offline geocoding solutions are also available to make apps like these a fully offline experience. Learn how to <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/data\/geocoding\/create-a-locator.htm\">create a locator task<\/a> in the ArcGIS Pro documentation.<\/em><\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<p>I used the <a href=\"https:\/\/developers.arcgis.com\/rest\/geocode\/\">ArcGIS Geocoding service<\/a> URI to create a locator task:<\/p>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> _worldLocatorTask = LocatorTask.withUri(\r\n  <span style=\"color: #e36209;\">Uri<\/span>.parse(\r\n    <span style=\"color: #032f62;\">'https:\/\/geocode-api.arcgis.com\/arcgis\/rest\/services\/World\/GeocodeServer'<\/span>,\r\n  ),\r\n);\r\n<\/code><\/pre>\n<p>For reverse geocoding (that is, when a user taps a location on the map and the address of that location is returned), after loading the locator task, I used the following code to retrieve the address:<\/p>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> reverseGeocodeResult = <span style=\"color: #d73a49;\">await<\/span> _worldLocatorTask.reverseGeocode(\r\n  location: location,\r\n  parameters: ReverseGeocodeParameters()..maxResults = <span style=\"color: #005cc5;\">1<\/span>, \r\n);\r\n<\/code><\/pre>\n<p>For the geocoding (where the user types in an address to a text field and the location is displayed on the map), I created new GeocodeParameters, ensuring only results from within Great Britain and from within the searchArea (feature layer extent) were returned.<\/p>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> params =\r\n    GeocodeParameters()\r\n      ..countryCode = <span style=\"color: #032f62;\">'GBR'<\/span>\r\n      ..searchArea = searchArea;\r\n<span style=\"color: #d73a49;\">final<\/span> geocodeResults = <span style=\"color: #d73a49;\">await<\/span> locatorTask.geocode(\r\n  searchText: address,\r\n  parameters: params,\r\n);\r\n<span style=\"color: #d73a49;\">final<\/span> location = geocodeResults.first.displayLocation;\r\n<\/code><\/pre>\n<p>I also used the suggestions part of the geocoding API to autopopulate results as a user types an address:<\/p>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> results = <span style=\"color: #d73a49;\">await<\/span> locatorTask.suggest(\r\n  searchText: query,\r\n  parameters: params,\r\n);\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":2937361,"id":2937361,"title":"Greenspace_routing","filename":"Greenspace_routing.png","filesize":297457,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\/greenspace_routing","alt":"A mobile phone screen displaying a map and a drop down list of places","author":"10242","description":"","caption":"The suggestions autopopulate in the search box of the app as the user starts to type an address.","name":"greenspace_routing","status":"inherit","uploaded_to":2934511,"date":"2025-08-26 18:39:26","modified":"2025-08-26 18:40:11","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":387,"height":785,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","medium-width":129,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","medium_large-width":387,"medium_large-height":785,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","large-width":387,"large-height":785,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","1536x1536-width":387,"1536x1536-height":785,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","2048x2048-width":387,"2048x2048-height":785,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing-229x465.png","card_image-width":229,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/Greenspace_routing.png","wide_image-width":387,"wide_image-height":785}},"image_position":"center","orientation":"vertical","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Part III &#8211; Creating widgets with Flutter to enhance the user experience<\/h2>\n<p>Creating custom reusable Flutter widgets made building a simple user interface for this app easy. To handle the three key UI elements (search box, route information and floating action buttons) I created the following custom widgets:<\/p>\n<ul>\n<li>For the location search boxes, I wrapped a TextField (built-in Flutter widget) to provide user-friendly text input fields. Part of this widget was also built upon Flutter\u2019s ListView builder to display the geocoding suggestions.<\/li>\n<li>To display each route summary, I built on Flutter\u2019s built-in widgets like Row, Icon, and Text to create a reuseable interactive UI component. This component included info on how long and how far it would take to walk, and how green the route was. When a route summary is pressed, the relevant route graphic is centred and highlighted on the map.<\/li>\n<li>Finally, to display the floating action buttons on top of the map view, I created an action buttons panel widget built on Flutter\u2019s IconButton widget. This widget provides interactive buttons for the user to edit marker locations, reset the map, and show map information.<\/li>\n<\/ul>\n<h2>Part IV &#8211; The fun part of sharing results!<\/h2>\n<p>I really enjoyed seeing new routes spring up all over the city for my usual walks \u2013 and found it interesting to find areas where no optimal greener route was found, either because it was already very green, or because green space was just too far away. There are also areas where a much greener walk is available with only a few minutes walking difference. Here are some screenshots of my favorite results of greener walks around Edinburgh!<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2937362,"id":2937362,"title":"GreenspacesSummary","filename":"GreenspacesSummary.png","filesize":2389991,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\/greenspacessummary","alt":"Three mobile phone screens displaying different route options through Edinburgh","author":"10242","description":"","caption":"Some of my favorite results from the app! Note how the left most route is only minutes longer but notably greener. The middle route is longer but clearly follows the river and is 50% greener than the alternative main road route - and the route on the right is already the most green optimal route because of how green it is! ","name":"greenspacessummary","status":"inherit","uploaded_to":2934511,"date":"2025-08-26 18:42:09","modified":"2025-08-26 18:45:38","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":1818,"height":1228,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary.png","medium-width":386,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary.png","medium_large-width":768,"medium_large-height":519,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary.png","large-width":1599,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary-1536x1038.png","1536x1536-width":1536,"1536x1536-height":1038,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary.png","2048x2048-width":1818,"2048x2048-height":1228,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary-688x465.png","card_image-width":688,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/08\/GreenspacesSummary-1599x1080.png","wide_image-width":1599,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>By authoring a network dataset in ArcGIS Pro and using four key classes (<a href=\"https:\/\/pub.dev\/documentation\/arcgis_maps\/latest\/arcgis_maps\/MobileMapPackage-class.html\">mobile map package<\/a>, <a href=\"https:\/\/pub.dev\/documentation\/arcgis_maps\/latest\/arcgis_maps\/TransportationNetworkDataset-class.html\">transportation network dataset<\/a>, <a href=\"https:\/\/pub.dev\/documentation\/arcgis_maps\/latest\/arcgis_maps\/RouteTask-class.html\">route task<\/a> and <a href=\"https:\/\/pub.dev\/documentation\/arcgis_maps\/latest\/arcgis_maps\/LocatorTask-class.html\">locator task<\/a>) I was able to use the Flutter Maps SDK to build an app I can use to help me find greener walking routes through the city and enjoy more time surrounded by nature than concrete.<\/p>\n<h2>Conclusions<\/h2>\n<p>This app combines geospatial datasets, customized routing, and mobile app development to inspire users to find greener routes while walking in Edinburgh. Being in nature and green spaces is so good for our well-being and mental health &#8211; just having a small change to a walk to add more green time can reap larger benefits across the day. Maybe you\u2019ll see a squirrel, hear birdsong, admire the knotted textures of tree bark, or breathe in the fragrant scent of lime trees on a summer\u2019s day. All far better than walking on a concrete pavement by a tarmacked road with heavy traffic!<\/p>\n<p>Sadly my app didn\u2019t help me find an alternative greener route to work without going wildly off track \u2013 however it has inspired me to find new greener walking routes at lunch time and to appreciate what green space Edinburgh does have (a lot!).<\/p>\n<h3>Where next?<\/h3>\n<p>The example I\u2019ve given in this blog of building a custom router using green space can be extended or as adapted as far as your imagination goes. You could, for example, further tweak the input feature layer to weight trees over grass, or wildflower meadows over golf courses. You could also use different data sets to prioritize walking routes that prefer less elevation gains for accessibility or that prefer high elevation gains for fitness and training. It could also be adapted for avoiding polluted streets (and fed into live data sources for that), or for tourists to route through the most historical areas in a city).<\/p>\n<p>Being able to author customized routing solutions is a powerful tool. While ArcGIS Pro is required to build network datasets, software developers can work with them directly via published mobile map packages or online routing services with no authoring required on their part. By combining these ready-made geospatial resources with app development skills, developers using Native Maps SDKs can create mobile apps that quietly deliver powerful spatial intelligence direct to people\u2019s pockets.<\/p>\n<p>If you\u2019d like to learn more about some of the workflows explored in this blog, check out the following resources:<\/p>\n<ul>\n<li>Check out the code I used to build the app <a href=\"https:\/\/github.com\/Rachael-E\/edinburgh_greenspaces_router\">on GitHub<\/a>.<\/li>\n<li><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/what-is-network-dataset-.htm\">What is a network dataset?<\/a><\/li>\n<li><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/networks\/publish-custom-routing-services.htm\">Publish custom routing services<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/flutter\/offline-maps-scenes-and-data\/tutorials\/display-a-map-from-a-mobile-map-package\/\">Mobile map packages in Flutter Maps SDK<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/flutter\/geocode-and-search\/\">Geocoding in Flutter Maps SDK<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/find-route\/\">Routing in Flutter Maps SDK<\/a><\/li>\n<\/ul>\n"}],"related_articles":[{"ID":2861932,"post_author":"10242","post_date":"2025-06-30 04:34:40","post_date_gmt":"2025-06-30 11:34:40","post_content":"","post_title":"How to integrate satellite imagery in mobile app development with Flutter Maps SDK","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"how-to-integrate-satellite-imagery-in-mobile-app-development-with-flutter-maps-sdk","to_ping":"","pinged":"","post_modified":"2025-07-01 02:51:31","post_modified_gmt":"2025-07-01 09:51:31","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2861932","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2622922,"post_author":"10242","post_date":"2024-12-12 14:58:48","post_date_gmt":"2024-12-12 22:58:48","post_content":"","post_title":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"map-vehicle-meeting-points-flutter","to_ping":"","pinged":"","post_modified":"2024-12-13 03:06:04","post_modified_gmt":"2024-12-13 11:06:04","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2622922","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2809082,"post_author":"366402","post_date":"2025-06-10 07:30:14","post_date_gmt":"2025-06-10 14:30:14","post_content":"","post_title":"Build smarter location-aware apps with Geotriggers in ArcGIS Maps SDK for Flutter","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"build-smarter-location-aware-apps-with-geotriggers-in-arcgis-maps-sdk-for-flutter","to_ping":"","pinged":"","post_modified":"2025-06-09 06:33:36","post_modified_gmt":"2025-06-09 13:33:36","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2809082","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"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"}],"show_article_image":false,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Greenspace_ArticleImage.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>Find walking routes via urban green spaces with Flutter Maps SDK<\/title>\n<meta name=\"description\" content=\"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.\" \/>\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\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Find walking routes through urban green spaces with Flutter Maps SDK\" \/>\n<meta property=\"og:description\" content=\"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\" \/>\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=\"2025-08-27T16:21:48+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=\"11 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\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\"},\"author\":{\"name\":\"Rachael Ellen\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd\"},\"headline\":\"Find walking routes through urban green spaces with Flutter Maps SDK\",\"datePublished\":\"2025-08-27T15:30:39+00:00\",\"dateModified\":\"2025-08-27T16:21:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\"},\"wordCount\":11,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"custom routing\",\"mobile applications\",\"native development\",\"Network Dataset\",\"walking routes\"],\"articleSection\":[\"Developers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\",\"name\":\"Find walking routes via urban green spaces with Flutter Maps SDK\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2025-08-27T15:30:39+00:00\",\"dateModified\":\"2025-08-27T16:21:48+00:00\",\"description\":\"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Find walking routes through urban green spaces with Flutter Maps SDK\"}]},{\"@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":"Find walking routes via urban green spaces with Flutter Maps SDK","description":"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.","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\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","og_locale":"en_US","og_type":"article","og_title":"Find walking routes through urban green spaces with Flutter Maps SDK","og_description":"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2025-08-27T16:21:48+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk"},"author":{"name":"Rachael Ellen","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd"},"headline":"Find walking routes through urban green spaces with Flutter Maps SDK","datePublished":"2025-08-27T15:30:39+00:00","dateModified":"2025-08-27T16:21:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk"},"wordCount":11,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["custom routing","mobile applications","native development","Network Dataset","walking routes"],"articleSection":["Developers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk","name":"Find walking routes via urban green spaces with Flutter Maps SDK","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2025-08-27T15:30:39+00:00","dateModified":"2025-08-27T16:21:48+00:00","description":"Learn how to use Flutter Maps SDK to build a custom routing app that guides walkers through urban green spaces for a greener commute.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/find-walking-routes-via-urban-green-spaces-with-flutter-maps-sdk#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Find walking routes through urban green spaces with Flutter Maps SDK"}]},{"@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":"August 27, 2025","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":780795,"name":"custom routing","slug":"custom-routing","term_group":0,"term_taxonomy_id":780795,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":215372,"name":"mobile applications","slug":"mobile-applications","term_group":0,"term_taxonomy_id":215372,"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":30971,"name":"Network Dataset","slug":"network-dataset","term_group":0,"term_taxonomy_id":30971,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":780796,"name":"walking routes","slug":"walking-routes","term_group":0,"term_taxonomy_id":780796,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":420,"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":213,"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":18,"filter":"raw"},{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2035,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":761,"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\/2934511","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=2934511"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2934511\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2934511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2934511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2934511"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2934511"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2934511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}