Geolocation in Web and Native Mobile Apps

Preview:

DESCRIPTION

While location-based mobile apps are becoming increasingly popular, they are still relatively new. Special considerations need to be made for battery life and handling large data sets of geolocated data. The good news is there are many services and technologies you can use to assist you in building mobile location-based apps.In this session, Aaron Parecki, co-founder of Geoloqi.com, shows you services you can leverage to do things like nearby business lookups, location-based triggers, nearest intersection queries, and more. Aaron also covers the location services available on the various mobile platforms as well as in HTML 5, and shares some insights on how to deal with battery life. The session concludes with some real-world use cases for real-time location such as turning on and off your lights in your house or sending an SMS when you leave work.

Citation preview

Geolocation in Web and Mobile Apps

Aaron Parecki – Web Directions – May 2011 aaron@parecki.com – http://aaron.pk – @aaronpk

Slides and code available at

aaron.pk/unplugged11

Displaying a Map

aaron.pk/unplugged11 @aaronpk

Displaying a Map - HTML

@aaronpk aaron.pk/unplugged11

Displaying a Map - iPhone

aaron.pk/unplugged11 @aaronpk

Displaying a Map - Android

aaron.pk/unplugged11 @aaronpk

Finding the User’s Location

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

!   Desktop browsers use nearby wifi hotspots

!   Mobile devices may use GPS or cell tower positioning

!   You can also use IP lookups to get a rough location (but is usually very inaccurate)

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

with Wifi

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

aaron.pk/unplugged11 @aaronpk

Finding the User’s Location using Javascript

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

aaron.pk/unplugged11 @aaronpk

Browser Geolocation

!   Usability problem with this approach:

!   User is left with an empty page waiting for them to press “allow”

!   You should do the best you can with no location, and then update your page after you get the user’s location

!   Could use IP-based location to center a map somewhere that is (probably) nearby

aaron.pk/unplugged11 @aaronpk

Using SimpleGeo

aaron.pk/unplugged11 @aaronpk

Start with IP-based geolocation to quickly center the map. Update with browser-based geolocation after it’s available.

aaron.pk/unplugged11

Finding Nearby Businesses

! SimpleGeo Places

!   Foursquare API

!   Twitter API

!   Yelp API

!   Google Places API

!   Many others

aaron.pk/unplugged11 @aaronpk

Place Search with Foursquare

aaron.pk/unplugged11 @aaronpk

developer.foursquare.com

Place Search with SimpleGeo

aaron.pk/unplugged11 @aaronpk

Place Search with SimpleGeo

aaron.pk/unplugged11 @aaronpk

aaron.pk/unplugged11

Finding Information About a Location

aaron.pk/unplugged11 @aaronpk

SimpleGeo Context

aaron.pk/unplugged11 @aaronpk

SimpleGeo Context

aaron.pk/unplugged11 @aaronpk

Monitoring Continuous Location

aaron.pk/unplugged11 @aaronpk

Monitoring Continuous Location in Javascript

aaron.pk/unplugged11 @aaronpk

Now go run around outside! (But keep the browser open)

Keep the browser open? That’s kind of lame.

aaron.pk/unplugged11 @aaronpk

Monitoring Continuous Location on the iPhone

aaron.pk/unplugged11 @aaronpk

This will keep running in the background! (But now you will potentially drain the battery)

Getting the User’s Approximate Location

Saving battery by

aaron.pk/unplugged11 @aaronpk

Retrieving Approximate Location on the iPhone

[locationManager startMonitoringSignificantLocationChanges];

aaron.pk/unplugged11 @aaronpk

•  Your app will be re-launched in the background when the user moves “significantly”

•  Most likely when they change cell towers

•  Location is very rough, ~500-1500m accuracy

Retrieving Approximate Location on Android

locationManager.requestLocationUpdate( LocationManager.PASSIVE_PROVIDER, 0, 0, listener);

aaron.pk/unplugged11 @aaronpk

•  Service runs in the background, gets locations when other providers or apps request location.

•  Could be cell tower location, could be GPS

Location-Based Triggers

aaron.pk/unplugged11 @aaronpk

Geonotes Location-Based Reminders

aaron.pk/unplugged11 @aaronpk

Try it! aaron.pk/geonote

Trigger-Based Actions

Create triggers based on where users are.

aaron.pk/unplugged11 @aaronpk

Send a message to all users within a radius.

aaron.pk/unplugged11 @aaronpk

Notify X when you arrive at place Y

Arrived

aaron.pk/unplugged11 @aaronpk

Real-time location-based gaming aaron.pk/unplugged11 @aaronpk

aaron.pk/unplugged11 @aaronpk

mapattack.org

Hybrid Web/Native App

aaron.pk/unplugged11 @aaronpk

Web Views

Communicating Between the Web and Native Components

aaron.pk/unplugged11 @aaronpk

Communicating Between the Web and Native Components

aaron.pk/unplugged11 @aaronpk

Turning On/Off Your Lights

aaron.pk/unplugged11 @aaronpk

Geoloqi  API  Your  Home  Server  

X10  SMSified.com  

Your  Home  Lights  And sending an SMS when you leave work

X10 Lamp Switch

Linux Command Line X10 Client

www.heyu.org

$ heyu on A1

aaron.pk/unplugged11 @aaronpk

aaron.pk/unplugged11 @aaronpk

Create a Layer in Geoloqi

aaron.pk/unplugged11 @aaronpk

Docs: geoloqi.org/API/layer/create

Create a Trigger in Geoloqi

aaron.pk/unplugged11 @aaronpk

Docs: geoloqi.org/API/trigger/create

Handling a Trigger from Geoloqi

aaron.pk/unplugged11 @aaronpk

Docs: geoloqi.org/Trigger_Callback

Create an SMS Number

aaron.pk/unplugged11 @aaronpk

smsified.com      or      tropo.com  

Send an SMS

aaron.pk/unplugged11 @aaronpk

Questions? Code: aaron.pk/unplugged11 Geoloqi API: geoloqi.org/API SMS API: smsified.com

Aaron Parecki @aaronpk

aaron.pk/unplugged11 @aaronpk