Geolocation in Web and Native Mobile Apps

7,820 views

Published on

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.

Published in: Technology

Geolocation in Web and Native Mobile Apps

  1. 1. Geolocation in Web and Mobile Apps Aaron Parecki – Web Directions – May 2011aaron@parecki.com – http://aaron.pk – @aaronpk Slides and code available at aaron.pk/unplugged11
  2. 2. Displaying a Map@aaronpk aaron.pk/unplugged11
  3. 3. Displaying a Map - HTML@aaronpk aaron.pk/unplugged11
  4. 4. Displaying a Map - iPhone@aaronpk aaron.pk/unplugged11
  5. 5. Displaying a Map - Android@aaronpk aaron.pk/unplugged11
  6. 6. Finding the User’s Location@aaronpk aaron.pk/unplugged11
  7. 7. 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)@aaronpk aaron.pk/unplugged11
  8. 8. Browser Geolocation with Wifi@aaronpk aaron.pk/unplugged11
  9. 9. Browser Geolocation@aaronpk aaron.pk/unplugged11
  10. 10. Browser Geolocation@aaronpk aaron.pk/unplugged11
  11. 11. Finding the User’s Location using Javascript@aaronpk aaron.pk/unplugged11
  12. 12. Browser Geolocation@aaronpk aaron.pk/unplugged11
  13. 13. 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@aaronpk aaron.pk/unplugged11
  14. 14. Using SimpleGeo Start with IP-based geolocation to quickly center the map. Update with browser-based geolocation after it’s available. aaron.pk/unplugged11@aaronpk aaron.pk/unplugged11
  15. 15. Finding Nearby Businesses ! SimpleGeo Places !   Foursquare API !   Twitter API !   Yelp API !   Google Places API !   Many others@aaronpk aaron.pk/unplugged11
  16. 16. Place Search with Foursquare developer.foursquare.com@aaronpk aaron.pk/unplugged11
  17. 17. Place Search with SimpleGeo@aaronpk aaron.pk/unplugged11
  18. 18. Place Search with SimpleGeo aaron.pk/unplugged11@aaronpk aaron.pk/unplugged11
  19. 19. Finding Information About a Location@aaronpk aaron.pk/unplugged11
  20. 20. SimpleGeo Context@aaronpk aaron.pk/unplugged11
  21. 21. SimpleGeo Context@aaronpk aaron.pk/unplugged11
  22. 22. Monitoring Continuous Location@aaronpk aaron.pk/unplugged11
  23. 23. Monitoring Continuous Location in Javascript Now go run around outside! (But keep the browser open)@aaronpk aaron.pk/unplugged11
  24. 24. Keep the browser open? That’s kind of lame.@aaronpk aaron.pk/unplugged11
  25. 25. Monitoring Continuous Location on the iPhone This will keep running in the background! (But now you will potentially drain the battery)@aaronpk aaron.pk/unplugged11
  26. 26. Saving battery by Getting the User’s Approximate Location@aaronpk aaron.pk/unplugged11
  27. 27. Retrieving Approximate Location on the iPhone [locationManager startMonitoringSignificantLocationChanges]; •  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@aaronpk aaron.pk/unplugged11
  28. 28. Retrieving Approximate Location on Android locationManager.requestLocationUpdate( LocationManager.PASSIVE_PROVIDER, 0, 0, listener); •  Service runs in the background, gets locations when other providers or apps request location. •  Could be cell tower location, could be GPS@aaronpk aaron.pk/unplugged11
  29. 29. Location-Based Triggers@aaronpk aaron.pk/unplugged11
  30. 30. Geonotes Try it! aaron.pk/geonoteLocation-Based Reminders@aaronpk aaron.pk/unplugged11
  31. 31. Trigger-Based Actions Create triggers based on where users are.@aaronpk aaron.pk/unplugged11
  32. 32. Send a message to all userswithin a radius.@aaronpk aaron.pk/unplugged11
  33. 33. ArrivedNotify X when you arrive at place Y@aaronpk aaron.pk/unplugged11
  34. 34. Real-time location-based gaming@aaronpk aaron.pk/unplugged11
  35. 35. mapattack.org@aaronpk aaron.pk/unplugged11
  36. 36. Hybrid Web/Native App Web Views@aaronpk aaron.pk/unplugged11
  37. 37. Communicating Between the Web and Native Components@aaronpk aaron.pk/unplugged11
  38. 38. Communicating Between the Web and Native Components@aaronpk aaron.pk/unplugged11
  39. 39. Turning On/Off Your Lights Geoloqi  API   Your  Home   Server   X10   SMSified.com   Your  Home  And sending an SMS when you leave work Lights  @aaronpk aaron.pk/unplugged11
  40. 40. X10 Lamp Switch Linux Command Line X10 Client www.heyu.org $ heyu on A1@aaronpk aaron.pk/unplugged11
  41. 41. @aaronpk aaron.pk/unplugged11
  42. 42. Create a Layer in Geoloqi Docs: geoloqi.org/API/layer/create@aaronpk aaron.pk/unplugged11
  43. 43. Create a Trigger in Geoloqi Docs: geoloqi.org/API/trigger/create@aaronpk aaron.pk/unplugged11
  44. 44. Handling a Trigger from Geoloqi Docs: geoloqi.org/Trigger_Callback@aaronpk aaron.pk/unplugged11
  45. 45. Create an SMS Number smsified.com      or      tropo.com  @aaronpk aaron.pk/unplugged11
  46. 46. Send an SMS@aaronpk aaron.pk/unplugged11
  47. 47. Questions? Code: aaron.pk/unplugged11 Geoloqi API: geoloqi.org/API SMS API: smsified.com Aaron Parecki @aaronpk@aaronpk aaron.pk/unplugged11

×