Das Web Wird Mobil - Geolocation und Location Based Services
Upcoming SlideShare
Loading in...5
×
 

Das Web Wird Mobil - Geolocation und Location Based Services

on

  • 2,259 views

Vortrag auf der International PHP Conference 2012 Spring Edition zu Geolocation im Browser und Location Based Services wie Google Places und Foursquare

Vortrag auf der International PHP Conference 2012 Spring Edition zu Geolocation im Browser und Location Based Services wie Google Places und Foursquare

Statistics

Views

Total Views
2,259
Views on SlideShare
2,254
Embed Views
5

Actions

Likes
2
Downloads
9
Comments
0

3 Embeds 5

http://pinterest.com 3
http://www.pinterest.com 1
http://de.pinterest.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Das Web Wird Mobil - Geolocation und Location Based Services Das Web Wird Mobil - Geolocation und Location Based Services Presentation Transcript

  • das webwird mobilStephan Schmidt, 1&1 Internet AGInternational PHP Conference 2012Hotel Maritim proArte, Berlin
  • beiArbeit
  • Sport View slide
  • undSpiel View slide
  • ich suche cup-cakes in meinernähe.
  • schritt eins:wo bin ich?
  • geolocation vordem jahr 2008:
  • 91.22.203.142
  • where the heck isoberderdingen?
  • google weißziemlich genauwo* ich bin.* und zwar nicht in oberderdingen.
  • geolocation imjahr 2012:
  • geographische länge 48.96977,8.613199geographische breite
  • breitengradelängengrade
  • woher weißmein browserdas?
  • geolocationapi
  • +
  • agie! etw asMund
  • die Magie ist ausjavascript nutz-bar.
  • if (navigator.geolocation) { navigator.geolocation.getCurrentPosition ( function(position) { // location retrieved }, function(error) { // error happened } );}
  • Geoposition coords : Coordinates accuracy : 65 // meter altitude : null altitudeAccuracy : null heading : null latitude : 52.518328398571434 longitude : 13.387145829999998 speed : null
  • PositionError code : 1 constructor : PositionErrorConstructor PERMISSION_DENIED : 1 POSITION_UNAVAILABLE : 2 TIMEOUT : 3 message: "User denied Geolocation"
  • navigator.geolocation.getCurrentPosition( function(position) {...}, function(error) {...}, { enableHighAccuracy : true, timeout : 5000, // milliseconds maximumAge : 1000 * 60 // milliseconds } );}
  • navigator.geolocation.watchPosition ( function(pos) { // position changed }, function(error) { // error happened })
  • 9.0+ 3.5+ 5.0+ 5.0+ 10.6+ 3.0+ 2.0+
  • where the heck is52.51832,13.387145?
  • var latlon = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);var options = { zoom: 15, center: latlon, mapTypeId: google.maps.MapTypeId.ROADMAP};var map = new google.maps.Map($("#map"), options);var marker = new google.maps.Marker({ position: latlon, map: map, title:"Sie sind hier!"});
  • menschenwollen lieberadressen.
  • http://maps.google.com/maps/api/service/output?latlng=lat,lon&sensor=false
  • geocodehttp://maps.google.com/maps/api/service/output?latlng=lat,lon&sensor=false
  • xml | jsonhttp://maps.google.com/maps/api/service/output?latlng=lat,lon&sensor=false
  • positionhttp://maps.google.com/maps/api/service/output?latlng=lat,lon&sensor=false
  • genug javascript,jetzt kommt derelefant.
  • public function geocodeReverse($lat, $lon) { $url = sprintf(http://maps.google.com/maps/api/ . geocode/json?latlng=%s,%s&sensor=false, $lat, $lon); $json = file_get_contents($url); $response = json_decode($json); if ($response->status === OK) { return $response->results; } else { throw new Exception($response->status); } }
  • "results" : [ { "address_components" : [...], "formatted_address" : "Mittelstraße 23, 10117 Berlin, Germany", "geometry" : { "location" : { "lat" : 52.51820, "lng" : 13.387170 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : {...}, "southwest" : {...} } }, "types" : [ "street_address" ] }, { "address_components" : [ ... ], "formatted_address" : "10117 Berlin, Germany", "geometry" : { "bounds" : {...} }, "location" : {...}, "location_type" : "APPROXIMATE", "viewport" : {...}, "types" : [ "postal_code" ] }, ...]
  • try { $geocoder = new Geocoder(); $results = $geocoder->geocodeReverse($lat, $lon); echo "<ul>"; foreach ($results as $result) { printf("<li>%s (%s)</li>", $result->formatted_address, implode(, , $result->types)); } echo "</ul>";} catch (Exception $e) { echo "Geocodierung ist fehlgeschlagen: " . $e->getMessage();}
  • •Mittelstraße 23, 10117 Berlin, Germany (street_address)•10117 Berlin, Germany (postal_code)•Mitte, Berlin, Germany (sublocality, political)•Berlin, Germany (locality, political)•Berlin, Germany (administrative_area_level_1, political)•Germany (country, political)
  • Laut Google: Laut Hotel:Mittelstraße 23 Friedrichstraße 15110117 Berlin 10117 BerlinGermany Germany
  • schritt zwei:wo sind diecupcakes?
  • https:/maps.googleapis.com/maps/api/place/method/output?parameters&key=[key]
  • sicherheithttps:/maps.googleapis.com/maps/api/place/method/output?parameters&key=[key]
  • search | detailhttps:/maps.googleapis.com/maps/api/place/method/output?parameters&key=[key]
  • xml | jsonhttps:/maps.googleapis.com/maps/api/place/method/output?parameters&key=[key]
  • location radius sensorkeyword name types rankbylanguage
  • https://maps.googleapis.com/maps/api/place/search/json?location=52.5185,13.3885&types=food&radius=25000&key=...&sensor=false&name=cupcake
  • { "html_attributions" : [ "Listings by ...." ], "results" : [ { "geometry" : { "location" : { "lat" : 52.5107460, "lng" : 13.4577320 } }, "icon" : "http://maps.gstatic.com/ma...s/restaurant-71.png", "id" : "b9a03f408df6ade6021a150d3bf5ae04f24853db", "name" : "Cupcake", "rating" : 4.10, "reference" : "CnRl...R7TAHjPh_H2Mw", "types" : [ "store", "cafe", "restaurant", "food"], "vicinity" : "Krossener Straße 12, Berlin" }, ....], "status" : "OK"}
  • $config = parse_ini_file(google-places.ini);$long = $_GET[long];$lat = $_GET[lat];$searchUrl = sprintf("https://maps.....search/json". "?location=%s,%s&types=food&radius=25000&“. "key=%s&sensor=false", $lat, $long, $config[googlekey]);if (isset($_GET[search])) { $searchUrl = $searchUrl . "&name=" . $_GET[search];}$jsonResponse = file_get_contents($searchUrl);$response = json_decode($jsonResponse);
  • if ($response->status !== OK) { printf(<p>Es ist ein Fehler aufgetreten: %s</p>, $response->status);} else { print <ul style="float: left; margin-right: 25px;">; foreach ($response->results as $entry) { $rating = isset($entry->rating) ? $entry->rating : 0; print <li>; printf(<a href="google-detail.php?reference=%s">%s</a>. <div class="rating_bar" title="Bewertung: %s"> . <div style="width:%d%%"></div></div>, $entry->reference, $entry->name, $rating, $rating/5*100); print </li>; } print </ul>;}
  • schritt zwei ½:wie weit ist esnoch?
  • ca b
  • die erde ist eine kugel*.* eigentlich ein ellipsoid.
  • dist = 6378.388 * acos( sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1)) http://www.kompf.de/gps/distcalc.html
  • function calcDistance($lat1, $lon1, $lat2, $lon2) { $lat1 = deg2rad($lat1); $lon1 = deg2rad($lon1); $lat2 = deg2rad($lat2); $lon2 = deg2rad($lon2); return 6378.388 * acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($lon2 - $lon1));}
  • geht das auchohne google?
  • https://api.foursquare.com/v2/venues/search?intent=browse&ll=lat,lon&radius=10000&limit=15&query=Cupcake&client_id=[id]&client_secret=[secret]&v=20111113
  • sicherheithttps://api.foursquare.com/v2/venues/search?intent=browse&ll=lat,lon&radius=10000&limit=15&query=Cupcake&client_id=[id]&client_secret=[secret]&v=20111113
  • versionierunghttps://api.foursquare.com/v2/venues/search?intent=browse&ll=lat,lon&radius=10000&limit=15&query=Cupcake&client_id=[id]&client_secret=[secret]&v=20111113
  • positionhttps://api.foursquare.com/v2/venues/search?intent=browse&ll=lat,lon&radius=10000&limit=15&query=Cupcake&client_id=[id]&client_secret=[secret]&v=20111113
  • $config = parse_ini_file(config/foursquare-config.ini);$searchUrl = sprintf(https://....../venues/search?. intent=browse&ll=%s,%s&radius=10000&limit=15. &query=Cupcake&client_id=%s&client_secret=%s. &v=20111113, $lat, $long, $config[clientId], $config[clientSecret]);$jsonResponse = file_get_contents($searchUrl);$response = json_decode($jsonResponse);foreach ($response->response->venues as $venue) { printf("<li>%s (%0.2f km)</li>", $venue->name, $venue->location->distance/1000);}
  • "categories": [ { "id" : "4bf58dd8d48988d1bc941735", "name" : "Cupcake Shop", "pluralName" : "Cupcake Shops", "shortName" : "Cupcakes", "icon" : { "prefix" : "https://.../categories/food/cupcakes_", "sizes" : [32,44,64,88,256], "name" : ".png" }, "primary" : true } ]
  • personalisierteempfehlungen
  • wie unterstütztdas mein business?
  • Beware of theDark Side, Luke.
  • http://www.cultofmac.com/157641/this-creepy-app-isnt-just-stalking-women- without-their-knowledge-its-a-wake-up-call-about-facebook-privacy/
  • vielen dank.Stephan SchmidtHead of Web Sales Development1&1 Internet AGschst@php.netwww.schst.nettwitter.com/schst