How To Reverse Geocode An Address In Xamarin Android App Using Visual Studio 2015

Introduction

Xamarin is a platform to develop cross-platform and multi-platform apps (for example, Windows phone, Android, iOS).

In the Xamarin platform, the code sharing concept is used. In Xamarin Studio, Visual Studio is also available. Use Geocoder to get an address from a latitude and longitude.

Prerequisites

  • Visual Studio 2015 Update 3.

The steps, mentioned below, are required to be followed in order to Reverse Geocode an Address in Xamarin Android app, using Visual Studio 2015.

Step 1

Click File--> select New--> select Project. The project needs to be clicked after opening all the types of projects in Visual Studio or click (Ctrl+Shift+N).



Step 2

After opening the New Project, select Installed-->Templates-->Visual C#-->Android-->choose the Blank app (Android).

Now, give your Android app a name (Ex:sample) and give the path of your project. Afterwards, click OK.



Step 3

Now, go to Solution Explorer. In Solution Explorer, get all the files and sources in your project. Select Resource-->Layout-->double click to open main.axml page. To write XAML code, you need to select source. Choose the Designer Window, if you want to design and you can design your app.



Step 4

After opening main.axml, file will open the main page designer. You can design the page, as per your desire.



Now, delete the Default hello world button. Go to the SourcePanel and you can see the button coding. You need to delete it. Afterwards, delete the XAML code, now delete the C# button action code. Go to the MainActivity.cs page. You need to delete the button code.

Step 5

Now, go to the toolbox Window. In the toolbox Window, get all the types of the tools and controls. You need to go to the toolbox Window. Now, scroll down and you will see all the tools and controls. You need to drag and drop the button.



Step 6

You need to drag and drop the TextView.



Step 7

Now, go to the properties Window. You need to edit the button's Id value and text value (EX: android:id="@+id/revGeocodeButton" android:text="@string/revGeocodeButtonText").



Step 8

Also, edit the TextView Id value (Ex: android:id="@+id/addressText").



Step 9

In this step, go to Main.axml page SourcePanel. Note, the button's Id value and text value. Also, note Textview Id value.

Main.axml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.    android:orientation="vertical"  
  3.    android:layout_width="match_parent"  
  4.    android:layout_height="match_parent">  
  5. <Button  
  6.    android:id="@+id/revGeocodeButton"  
  7.    android:layout_width="fill_parent"  
  8.    android:layout_height="wrap_content"  
  9.    android:text="@string/revGeocodeButtonText"  
  10.    android:layout_marginBottom="10dp" />  
  11. <TextView  
  12.    android:id="@+id/addressText"  
  13.    android:layout_width="fill_parent"  
  14.    android:layout_height="fill_parent" />  
  15. </LinearLayout>  


Step 10

In this step, open String.xml page. Go to the Solution Explorer-->Resource-->values-->String.xml.



Step 11

After opening String.xml file, write XML code, mentioned below.

String.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.    <string name="revGeocodeButtonText">Reverse Geocode Location</string>  
  4.    <string name="ApplicationName">reversegeocode</string>  
  5. </resources>  


Step 12

In this step, go to the MainActivity.cs page in Solution Explorer. Add Namespaces, mentioned below.

MainActivity.cs
  1. using Android.Locations;  
  2. using System.Linq;  


Step 13

In this step, go to MainActivity.cs page. Write the code, mentioned below between OnCreate() Method.

MainActivity.cs
  1. protected override void OnCreate(Bundle bundle)  
  2. {  
  3.     base.OnCreate(bundle);  
  4.     // Set our view from the "main" layout resource  
  5.     SetContentView(Resource.Layout.Main);  
  6.     var button = FindViewById < Button > (Resource.Id.revGeocodeButton);  
  7.     button.Click += async(sender, e) =>  
  8.     {  
  9.         var geo = new Geocoder(this);  
  10.         var addresses = await geo.GetFromLocationAsync(42.37419, -71.120639, 1);  
  11.         var addressText = FindViewById < TextView > (Resource.Id.addressText);  
  12.         if (addresses.Any()) {  
  13.             addresses.ToList().ForEach(addr => addressText.Append(addr + System.Environment.NewLine + System.Environment.NewLine));  
  14.         } else {  
  15.             addressText.Text = "Could not find any addresses.";  
  16.         }  
  17.     };  
  18. }  


Step 14

If you have Android Virtual device, run the app on it, else connect your Android phone and run the app on it. Simply, connect your phone and go to Visual Studio. The connected phone will show up in the Run menu (Ex:LENOVO A6020a40 (Android 5.1-API 22)).

Click Run option.



Output

After a few seconds, the app will start running on your phone. You will see the Reverse Geocode address is successful.



Summary

This was the process of how to reverse geocode an address in Xamarin Android app, using Visual Studio 2015.

 


Similar Articles