One of my recent projects had an interesting requirement. It was an Android application and it needed to be aware of any businesses that were near the user’s current location. If you have ever used Facebook’s or FourSquare’s “Check-In” feature, it’s very similar. The user had to tap a button, and bring up a list of all business that were near the user. The user would then choose a business (location), and then display the business’s Name, Address, City, State, Latitude, Longitude, etc.
When researching this functionality, I stumbled along the Google Places API. Upon examining the Google Places API, I noticed the PlacePicker widget. This is an out of the box widget that you can display programmatically and it will give you a beautiful Location Picker user interface similar to the Google Maps app for Android.
This meet my requirement, and then some. Not only did it give me a list of businesses that were near my user’s location, it also gave me a material design user interface that my users could interact with. That was an added bonus since I didn’t need to create a UI for this. I could just use the out of the box control and be done with it. To top it off, using the PlacePicker was easy! And on this post, I’m going to show you how to add it to your Xamarin.Android applications.
First Things First
The first thing you need to do before you start writing code is to acquire a Google Maps v2 API Key. If you already have one for your application, then great! Use that one! If not, you’ll have to acquire one. They are free, and there are a number of steps you have to perform in order to get one. Luckily, Xamarin has some detailed documentation on how to get one. So I recommend that you read that.
Next you want to download the latest Android SDK Tools and Google Play Services SDK from the Android Device Manager. I’m not quite sure what minimum versions you’ll need. But if you have a relatively recent version, then it should work. If not, just download the latest versions from the Android SDK Manager. If you need details on how to do that, I discuss this in the video below.
High Level Step By Step
I go into great detail in the video below, but as a reference here is what we’re going to do:
- Acquire a Google Maps v2 API Key.
- Download the latest, or have a relatively later version, of the Android SDK Tools and Google Play Services API.
- Create an instance of PlacePicker.IntentBuilder.
- Use StartActivityFromResult to launch an intent from your Place Picker Intent Builder.
- Override OnActivityResult so that the PlacePicker control can return data back to us.
- Get the Place that the user picked from the PlacePicker.
- Populate our UI from the Place object that the user chose.
That’s pretty much it at a high level. You can download the completed source code on my GitHub page here. Of course, a video is worth a million words! Watch the video and you can see the step by step details how to call the built-in PlacePicker control.
Feel free to leave a comment and let me know what you think!