{"id":6622,"date":"2025-09-14T16:27:11","date_gmt":"2025-09-14T16:27:11","guid":{"rendered":"https:\/\/obsidiansofteducation.com\/?page_id=6622"},"modified":"2025-12-11T19:20:38","modified_gmt":"2025-12-11T19:20:38","slug":"mit-app-inventor-maps-tutorial","status":"publish","type":"page","link":"https:\/\/obsidiansofteducation.com\/index.php\/mit-app-inventor-maps-tutorial\/","title":{"rendered":"Place Finder App in MIT App Inventor | Maps &amp; OpenStreetMap Tutorial"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Hello friends, and welcome to Obsidian Soft<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">In today\u2019s tutorial, I will teach you how to use the maps component in MIT App Inventor. We will build a place finder app.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">So, let\u2019s begin:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Open up MIT App Inventor and start a new project. Name it placeFinderApp and keep the toolkit default. This is very important. For screen 1, make align horizontal center, align vertical center, and set the screen orientation to portrait.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Drag and drop a <strong>ListPicker <\/strong>from the <strong>User Interface<\/strong> palette onto the viewer. Make background color orange, font bold, font size 18, and change text to \u201c<strong>Choose Place<\/strong>\u201d. In elements from string, type in hospital, restaurant, atm, school. You can add other amenities too, but be careful with the spellings. Check out the following link for the list of amenities. https:\/\/wiki.openstreetmap.org\/wiki\/Category:Amenities<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Now, add a <strong>Map <\/strong>component from the <strong>Maps <\/strong>palette. Make height 75% and width fill parent.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Add a <strong>Location <\/strong>sensor from the <strong>Sensors <\/strong>palette.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Add <strong>Web <\/strong>and <strong>Activity Starter<\/strong> from the <strong>Connectivity <\/strong>palette and a <strong>Notifier <\/strong>from the <strong>User Interface<\/strong> palette.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Our screen design is done, so let\u2019s go to the blocks section.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">We need a few global variables:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"493\" height=\"233\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-13.png\" alt=\"\" class=\"wp-image-6623\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-13.png 493w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-13-300x142.png 300w\" sizes=\"auto, (max-width: 493px) 100vw, 493px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">First, we will work on putting a green marker at our home location.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Make an empty procedure called goToHome.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"282\" height=\"122\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-14.png\" alt=\"\" class=\"wp-image-6624\"\/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Next, get the LocationChanged event of the location sensor. Check if the map doesn\u2019t already have markers, as this means the home was already set. If the list of markers is empty, then set global variables for home latitude and longitude to the latitude and longitude detected by the location sensor, and then call goToHome procedure.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-15-1024x341.png\" alt=\"\" class=\"wp-image-6625\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-15-1024x341.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-15-300x100.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-15-768x256.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-15.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Now, let\u2019s work on the goToHome procedure. First, we center themap around our home\u2019s latitude and longitude. Then, we empty our markers list. This goToHome will be called at two points: when our location is determined for the first time, and when we choose some other amenity in the places list picker.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Then, we create our homeMarker at our location\u2019s latitude and longitude. We set the homeMarker\u2019s properties, such as title and color, and also enable the info box. This means that the title will show when the user taps on a marker.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Next, we will add this homeMarker to our list of markers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-16-1024x771.png\" alt=\"\" class=\"wp-image-6626\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-16-1024x771.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-16-300x226.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-16-768x578.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-16.png 1392w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">When the user chooses an amenity or place, the list picker\u2019s AfterPicking event is triggered.First, we check if the location sensor\u2019s latitude isn\u2019t 0. This means that the user hasn\u2019t turned on their location. So, use the notifier to show a relevant message in the else. In If, set the web component\u2019s URL to a call to the Overpass API, which is a way of accessing OpenStreetMap data.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">So, the URL is a join of 7 things.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><a href=\"https:\/\/overpass-api.de\/api\/interpreter?data=[out:json];node[amenity=\" target=\"_blank\" rel=\"noopener\"><strong>https:\/\/overpass-api.de\/api\/interpreter?data=[out:json];node[amenity=<\/strong><\/a><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>ListPicker.selection<\/strong><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>](around:2000,<\/strong><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>LocationSensor.Latitude<\/strong><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>,<\/strong><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>LocationSensor.Longitude<\/strong><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>);out;<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Copy and paste the text parts very carefully.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Then, call web1. Get. Verify the blocks in ListPicker.AfterPicking event super carefully as a small spelling mistake can lead to the API call failing. Your block structure should look like the following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-17-1024x501.png\" alt=\"\" class=\"wp-image-6627\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-17-1024x501.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-17-300x147.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-17-768x376.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-17.png 1484w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">The call to Web1.Get will trigger Web1.GotText event.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"954\" height=\"172\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-18.png\" alt=\"\" class=\"wp-image-6628\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-18.png 954w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-18-300x54.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-18-768x138.png 768w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">The responseContent looks like this when we call the Overpass API. So, we need to decode it.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">{<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;version&#8221;: 0.6,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;generator&#8221;: &#8220;Overpass API 0.7.62.5 1bd436f1&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;osm3s&#8221;: {<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;timestamp_osm_base&#8221;: &#8220;2025-05-19T08:50:42Z&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;copyright&#8221;: &#8220;The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.&#8221;<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;},<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;elements&#8221;: [<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">{<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;type&#8221;: &#8220;node&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;id&#8221;: 458106054,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;lat&#8221;: 41.8098280,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;lon&#8221;: -87.9657834,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;tags&#8221;: {<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;amenity&#8221;: &#8220;restaurant&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;name&#8221;: &#8220;ZaZa&#8217;s&#8221;<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;}<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">},<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">{<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;type&#8221;: &#8220;node&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;id&#8221;: 4619166089,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;lat&#8221;: 41.7786793,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;lon&#8221;: -87.9756891,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&#8220;tags&#8221;: {<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;amenity&#8221;: &#8220;restaurant&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;cuisine&#8221;: &#8220;mexican&#8221;,<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&#8220;name&#8221;: &#8220;Marmelly&#8221;<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">&nbsp;&nbsp;}<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">},<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"188\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19-1024x188.png\" alt=\"\" class=\"wp-image-6629\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19-1024x188.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19-300x55.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19-768x141.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19-1536x281.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-19.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">And we need the list of places inside this responseDict against the key: \u201celements\u201d. Spelling is very important when getting data from dictionaries. We will put all places inside a local list of placesData.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20-1024x301.png\" alt=\"\" class=\"wp-image-6630\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20-1024x301.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20-300x88.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20-768x226.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20-1536x452.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-20.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Next, we are going to reset our global places names and map\u2019s features. This is to remove existing markers from the map. We also call the goHome procedure, as we want to get the map back to the original state with a green marker for our home.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"375\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21-1024x375.png\" alt=\"\" class=\"wp-image-6631\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21-1024x375.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21-300x110.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21-768x281.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21-1536x563.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-21.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Now comes the main part of creating markers on our map. We go through each item in our placesData, the local list containing all the places. We make a local variable name for containing the name of our place, which is basically inside our dictionary against the key \u201ctags\u201d and within this dictionary, a value against the key \u201cname\u201d. We add the local variable name to our placesNames list. Then, we get the latitude and longitude. Create a marker at that point. Set its properties. And then, add the marker to the markers list. Outside the for loop, we set the map\u2019s features to this markers list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1003\" height=\"1024\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22-1003x1024.png\" alt=\"\" class=\"wp-image-6632\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22-1003x1024.png 1003w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22-294x300.png 294w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22-768x784.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22-1504x1536.png 1504w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-22.png 1567w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Since we have so many markers, here, any component blocks are super helpful in coding. We get the any Marker click event. We check that the marker\u2019s title isn\u2019t Home. And then, we store this marker in the global clickedMarker variable. And we show a dialog user Notifier\u2019s ShowChooseDialog asking whether the user wants to open Google Maps to show directions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"494\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-23-1024x494.png\" alt=\"\" class=\"wp-image-6633\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-23-1024x494.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-23-300x145.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-23-768x370.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-23.png 1448w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">When the user chooses something on the dialog: yes or no button, Notifier\u2019s After Choosing event is triggered. If their choice is yes, we will open up Google Maps using the activity starter; otherwise, we will dismiss the dialog.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">The way to set the activity starter is as follows:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Action = android.intent.action.VIEW<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">DataUri is a join of<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><a href=\"https:\/\/www.google.com\/maps\/search\/?api=1&amp;query=\" target=\"_blank\" rel=\"noopener\">https:\/\/www.google.com\/maps\/search\/?api=1&amp;query=<\/a><\/li>\n\n\n\n<li class=\"has-medium-font-size\">The clicked marker\u2019s latitude<\/li>\n\n\n\n<li class=\"has-medium-font-size\">,<\/li>\n\n\n\n<li class=\"has-medium-font-size\">The clicked marker\u2019s longitude<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24-1024x434.png\" alt=\"\" class=\"wp-image-6634\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24-1024x434.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24-300x127.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24-768x325.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24-1536x651.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-24.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">So, our app is done, in which we have marked our own location. We can look at different types of amenities within 2 km of our own location. I hoped you liked this tutorial.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">You can also get the AIA project file<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\"><strong><a href=\"https:\/\/obsidiansoft.gumroad.com\/l\/ehpsw\" target=\"_blank\" rel=\"noopener\">Place Finder AIA File<\/a><\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">You can also have a look at the video tutorial here:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<p class=\"responsive-video-wrap clr\"><iframe loading=\"lazy\" title=\"Place Finder App in MIT App Inventor | Maps &amp; OpenStreetMap Tutorial\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/zcHoKdufSBA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<\/div><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Please like my videos and share it with your friends and family. Also, subscribe to my channel and press the bell icon so you don\u2019t miss any of the great projects I have planned for you.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><a href=\"https:\/\/www.youtube.com\/c\/obsidiansofteducation\" target=\"_blank\" rel=\"noopener\">https:\/\/www.youtube.com\/c\/obsidiansofteducation<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Please like my Facebook page and Instagram page for more educational resources and tips.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Facebook:<\/strong><a href=\"https:\/\/www.blogger.com\/blog\/page\/edit\/4947000819484484884\/7140650632339107612#\" target=\"_blank\" rel=\"noopener\">&nbsp;https:\/\/www.facebook.com\/ObsidianSoft\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Instagram:<\/strong><a href=\"https:\/\/www.blogger.com\/blog\/page\/edit\/4947000819484484884\/7140650632339107612#\" target=\"_blank\" rel=\"noopener\">&nbsp;https:\/\/www.instagram.com\/obsidiansoftapps\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Pinterest:<\/strong>&nbsp;<a href=\"https:\/\/www.pinterest.com\/obsidiansoft\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.pinterest.com\/obsidiansoft\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">For links to free educational&nbsp;<a href=\"https:\/\/obsidiansofteducation.com\/index.php\/flappy-bird-game-mit-app-inventor\/#\">&nbsp;apps<\/a>, have a look at the&nbsp;<a href=\"https:\/\/obsidiansofteducation.com\/index.php\/mobile-apps\/\">educational apps page<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello friends, and welcome to Obsidian Soft In today\u2019s tutorial, I will teach you how to use the maps component in MIT App Inventor. We will build a place finder app. So, let\u2019s begin: Open up MIT App Inventor and start a new project. Name it placeFinderApp and keep the toolkit default. This is very [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6622","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/comments?post=6622"}],"version-history":[{"count":4,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6622\/revisions"}],"predecessor-version":[{"id":6820,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6622\/revisions\/6820"}],"wp:attachment":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/media?parent=6622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}