Slideshow transcript
Slide 1: Adding “Where” to Mobile and Web Applications Wednesday, April 23, 2008 1
Slide 2: me Ryan Sarver Director of Consumer Products Skyhook Wireless / Loki http://loki.com http://skyhookwireless.com http://sarver.org http://linkedin/in/rsarver Wednesday, April 23, 2008 2
Slide 3: practical tools to allow you to add location capabilities to your website or app today Wednesday, April 23, 2008 3
Slide 4: sarver.org for links after session Wednesday, April 23, 2008 4
Slide 5: location = context Wednesday, April 23, 2008 5
Slide 6: higher context = relevancy Wednesday, April 23, 2008 6
Slide 7: higher location = relevancy Wednesday, April 23, 2008 7
Slide 8: location comes in many flavors Wednesday, April 23, 2008 8
Slide 9: 42.2817, -71.18279 Wednesday, April 23, 2008 9
Slide 10: Polygons Wednesday, April 23, 2008 10
Slide 11: 747 Howard St San Francisco, CA Wednesday, April 23, 2008 11
Slide 12: Howard St & 3rd St Wednesday, April 23, 2008 12
Slide 13: South of Market Wednesday, April 23, 2008 13
Slide 14: how you display it can be used as a way of blurring location Wednesday, April 23, 2008 14
Slide 15: markers in maps can be difficult when dealing with exposed location Wednesday, April 23, 2008 15
Slide 16: Ryan checked into Soma, San Francisco, CA Wednesday, April 23, 2008 16
Slide 17: Sharing Location with Friends http://my.loki.com Wednesday, April 23, 2008 17
Slide 18: Geotargeting Rules of Thumb 1. Offer everything you can 2. Degrade gracefully 3. Allow the user to change it Know your users, know your use cases! Wednesday, April 23, 2008 18
Slide 19: Tip! yoursite.com ?lat=&lng= Wednesday, April 23, 2008 19
Slide 20: where does location happen? client & network Wednesday, April 23, 2008 20
Slide 21: Mobile many locations in, Mobile one location out Web Web Apps asynchronous Apps Laptop Laptop Location Broker (FireEagle) Wednesday, April 23, 2008 21
Slide 22: Wednesday, April 23, 2008 22
Slide 23: FireEagle Pseudo <?php $fe = new FireEagle( $fe_key, $fe_secret, $_SESSION['access_token'], $_SESSION['access_secret']); $r = $fe->update(array(‘q’ => ‘san francisco, ca’)); $loc = $fe->user(); foreach ($loc->user->location_hierarchy as $location) { echo $location->latitude.", ".$location->longitude; } ?> Wednesday, April 23, 2008 23
Slide 24: Desktop Web Profile • Stationary sessions single location lookups • Indoors GPS and Cell Tower don’t work • Easier data entry • More complex data can be displayed Wednesday, April 23, 2008 24
Slide 25: Mobile Profile • Transient sessions single location and continuous • Indoors and Outdoos IP doesn’t work • Difficult data entry minimize the amount typed • Small screen size, low computing power, be “power-aware” Wednesday, April 23, 2008 25
Slide 26: Geolocation Methods 1.Triangulate 2.Associate 3.Geo Term Extraction 4.Data Entry / Geocoding Wednesday, April 23, 2008 26
Slide 27: Triangulation Determine position of an unknown object relative to known objects • Wi-Fi • GPS • Cell Tower Wednesday, April 23, 2008 27
Slide 28: GPS 1 meter Wi-Fi 20 meter Cell Tower 2,000 meter Wednesday, April 23, 2008 28
Slide 29: San Francisco Wi-Fi Wednesday, April 23, 2008 29
Slide 30: Wi-Fi Loki Javascript API http://loki.com/developers http://loki.com/developers/documentation Wednesday, April 23, 2008 30
Slide 31: GPS (sideload) Garmin Communicator Plugin http://www.garmin.com/ products/communicator/ http://developer.garmin.com/ web-device/garmin- communicator-plugin/ Wednesday, April 23, 2008 31
Slide 32: Association Wednesday, April 23, 2008 32
Slide 33: Association • Match an IP Address to a physical location • Not an exact science • Best for city-level geotargeting • False positives and in the correct state only ~85% Wednesday, April 23, 2008 33
Slide 34: IP Geolocation Quova http://www.quova.com ip2location http://www.ip2location.com MaxMind http://www.maxmind.com Wednesday, April 23, 2008 34
Slide 35: Geo Term Extraction Resolve an arbitrary string into a geographical point or area: “food in cambridge” = “food” in “Cambridge, Massachusetts, USA” MetaCarta Query Parser API http://ondemand.metacarta.com/?method=QueryParser Urban Mapping GeoMods http://urbanmapping.com/geomods/index.html Wednesday, April 23, 2008 35
Slide 36: Geocoding Resolve a geographically-based string into a geographical point or area Wednesday, April 23, 2008 36
Slide 37: Geocoding • Geonames Webservices http://www.geonames.org/export/ • Google Geocoder Class http://code.google.com/apis/maps/documentation/services.html#Geocoding • Yahoo Geocoding API http://developer.yahoo.com/maps/rest/V1/geocode.html • Geocoder.us http://geocoder.us/ Wednesday, April 23, 2008 37
Slide 38: Location in the Browser navigator.getGeolocation() • LocationAware.org Session at Where 2.0 http://www.locationaware.org • W3C Web API http://www.w3.org/2006/webapi/ Wednesday, April 23, 2008 38
Slide 39: Mobile Location Wednesday, April 23, 2008 39
Slide 40: Mobile Location APIs • iPhone Core Location API Wi-Fi, Cell Tower • Symbian S60 Location API GPS, A-GPS • J2ME JSR-179 GPS, device-specific Wednesday, April 23, 2008 40
Slide 41: @implementation MyLocationGetter - (void)startUpdates { if (nil == locationManager) locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.distanceFilter = 1000; // 1 kilometer locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; [locationManager startUpdatingLocation]; } Wednesday, April 23, 2008 41
Slide 42: - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { // Disable future updates to save power. [manager stopUpdatingLocation]; printf("latitude %+.6f, longitude %+.6fn", newLocation.coordinate.latitude, newLocation.coordinate.longitude); } http://forums.macrumors.com/showthread.php?t=455767 Wednesday, April 23, 2008 42
Slide 43: Other APIs / Platforms • Skyhook SDK WinMo, S60, Linux, XP,Vista, OSX http://www.skyhookwireless.com/ developers • WHERE Widgets AT&T, Sprint, Alltel, MetroPCS http://developer.where.com/ Wednesday, April 23, 2008 43
Slide 44: Skyhook Example int main(int argc, char *argv[]) { WPS_SimpleAuthentication authentication; authentication.username = argv[1]; authentication.realm = argv[2]; WPS_Location* location; int rc = WPS_location(&authentication, WPS_NO_STREET_ADDRESS_LOOKUP, &location); if (rc == WPS_OK) printf("%f, %fn", location->latitude, location->longitude); WPS_free_location(location); return 0; } Wednesday, April 23, 2008 44
Slide 45: Cell Tower • Zone Tag (yahoo) http://developer.yahoo.com/yrb/zonetag/ • OpenCellID http://www.opencellid.org • CellDB http://celldb.org/ Wednesday, April 23, 2008 45
Slide 46: Upcoming Events • Where 2.0 Burlingame, CA May 12th - 14th • WhereCamp Mountain View, CA May 17th - 18th Wednesday, April 23, 2008 46
Slide 47: Questions? Wednesday, April 23, 2008 47



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 13 (more)