【a-3】次世代ジオロケーション サービスの開発手法 河合太郎 氏

43
次世代ジオロケーション サービスの開発法 ヤフー株式会社 R&D統括本部 河合太 1 1199日金曜日

Upload: developers-summit

Post on 28-May-2015

3.929 views

Category:

Documents


0 download

TRANSCRIPT

  • 1. R&D 111 9 9

2. Yahoo! Open Local PlatformYOLP) YOLP 211 9 9 3. [email protected] http://twitter.com/inuro http://facebook.com/inuro Yahoo! Open Local Platform LatLongLab R&D 311 9 9 4. 411 9 9 5. 511 9 9 6. 1. 2. 3. 611 9 9 7. 711 9 9 8. km 811 9 9 9. ARAugumented Reality 911 9 9 10. User Generated Contents 10 1011 9 9 11. 1111 9 9 12. 1. 2. API 3. 1211 9 9 13. Yahoo! Open Local PlatformYOLP 1311 9 9 14. YOLPYahoo! Open Local PlatformYOLP API http://developer.yahoo.co.jp/webapi/map/ 1411 9 9 15. Yahoo!http://developer.yahoo.co.jp/webapi/map/ Yahoo! API Yahoo! JAPANYahoo! 1,100 28 API Yahoo!API 1511 9 9 16. APIhttp://developer.yahoo.co.jp/webapi/map/ API API 1611 9 9 17. http://developer.yahoo.co.jp/webapi/map/ YOLP http://gallery.olp.yahoo.co.jp/ API 1711 9 9 18. http://developer.yahoo.co.jp/webapi/map/ iOS SDK Android SDK Javascript API Static Map API PNG/JPG/GIF 1811 9 9 19. http://developer.yahoo.co.jp/webapi/map/ 22 1911 9 9 20. standardvold midnightbrown redgreen blue gray 20 simple 11 9 9 21. http://developer.yahoo.co.jp/webapi/map/ 2111 9 9 22. http://developer.yahoo.co.jp/webapi/map/ 2211 9 9 23. http://developer.yahoo.co.jp/webapi/map/ API 9/8 2311 9 9 24. API http://developer.yahoo.co.jp/webapi/map/ 2411 9 9 25. YOLP 2511 9 9 26. YOLP YOLP 25000WMS OpenStreetMap2611 9 9 27. JavascriptAPI API API2711 9 9 28. var stylemaplayer = new Y.StyleMapLayer("district"); var layerset = new Y.LayerSet("", [stylemaplayer]); map.addLayerSet("stylemap",layerset); map.drawMap(new Y.LatLng(34.6812,135.2022), 14, "stylemap"); 28119 9 29. var geoCoder = new Y.GeoCoder(); map.bind("dblclick", function(latlng){ geoCoder.execute({"latlng": latlng}, function(ydf) { if (ydf.result.count > 0){var code = ydf.features[0].property.AddressElement[1].Code;searchRamen(code); } }); });2911 9 9 30. ID 0106 ID d8a23e9e64a4c817227ab09858bc1330 var appId = your_app_id; var cassetteId = "d8a23e9e64a4c817227ab09858bc1330"; var searchRamen = function(code){var url = "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch"+ "?appid=" + appId+ "&cid=" + cassetteId+ "&gc=0106"+ "&results=100"+ "&ac= + code; 3011 9 9 31. Y.GeoXmlHeatmapLayer var appId = your_app_id; var cassetteId = "d8a23e9e64a4c817227ab09858bc1330"; var searchRamen = function(code){var url = "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch"+ "?appid=" + appId+ "&cid=" + cassetteId+ "&gc=0106"+ "&results=100"+ "&ac= + code; heatmapLayer = new Y.GeoXmlHeatmapLayer(url); map.addLayer(this.heatmapLayer); } 3111 9 9 32. http://inuro.in/yolp/heatmap.html 3211 9 9 33. iPhoneWeb JavascriptAPI Y.RouteSearchPlugin API YOLP Geolocation API3311 9 9 34. GeolocationAPIwatchPosition 1 100m var lasttime = 0; var lastlatlng = new Y.LatLng(0,0); if(navigator.geolocation){navigator.geolocation.watchPosition(function(pos){var latlng = new Y.LatLng(pos.coords.latitude,pos.coords.longitude);var time = new Date().getTime();if(time - lasttime > 60000 && latlng.distance(lastlatlng) > 0.1){ lasttime = time; lastlatlng = latlng; searchNearestMcDonald(latlng);} ! }); }3411 9 9 35. ID d115e2a62c8f28cb03a493dc407fa03f 1 var searchNearestMcDonald = function(latlng){$.ajax({url: "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch",dataType: "jsonp",data:{ appid: your_app_id, cid: "d115e2a62c8f28cb03a493dc407fa03f", results: 1, lat: latlng.lat(), lon: latlng.lng(), sort: "dist", output: "json"},success: updateRoute}); } 3511 9 9 36. Y.RouteSearchPlugin 2var updateRoute = function(result){ var coords = result.Feature[0].Geometry.Coordinates.split(","); if(plugin){ map.removePlugin(plugin); } plugin = new Y.RouteSearchPlugin({latlngs:[ latlng, new Y.LatLng(coords[1],coords[0]) ]}); map.addPlugin(plugin);} 3611 9 9 37. http://inuro.in/ yolp/mcdo.html3711 9 9 38. YOLP 25000 WMSWeb Map Service OpenStreetMap SlippyMap 3811 9 9 39. 25000 Y.ImageTileLayergetImageSrc var kibanLayer = new Y.ImageTileLayer(); kibanLayer.getImageSrc = function(x, y, z){ ! var sw = this.fromTileToLatLng(x, y, 0, 0); ! var ne = this.fromTileToLatLng(x+1, y+1, 0, 0); ! var proj = map.getProjection(); ! var p1 = proj.fromPixelToMeters(proj.fromLatLngToPixel(sw, z), z); ! var p2 = proj.fromPixelToMeters(proj.fromLatLngToPixel(ne, z), z); ! var bbox = p1.x + "," + p1.y + "," + p2.x + "," + p2.y; ! var url = "http://www.finds.jp/ws/kiban25000gwc.cgi" + ! ! "?VERSION=1.1.1" + ! ! "&REQUEST=GetMap" + ! ! "&SRS=EPSG:900913" + ! ! "&WIDTH=256" + ! ! "&HEIGHT=256" + ! ! "&FORMAT=image/png" + ! ! "&LAYERS=kiban25000:AllT" + ! ! "&BBOX=" + bbox; ! return url; } 3911 9 9 40. OpenStreetMap Y.ImageTileLayergetImageSrc OpenStreetMap var osmLayer = new Y.ImageTileLayer(); osmLayer.getImageSrc = function(x, y, z){//OSM zoomYOLP 1var zoom = z - 1; // var g = Math.pow(2, zoom); //y OSMOSM (0,0)YOLP y = Math.floor((y + 0.5) * -1 + g / 2); var url = "http://tile.openstreetmap.org/" + zoom + "/" + x + "/" + y + ".png"; return url; } 4011 9 9 41. var setlist = { normal: new Y.LayerSet("", [new Y.NormalLayer()]),kiban: new Y.LayerSet("25000", [kibanLayer]),osm: new Y.LayerSet("OpenStreetMap", [osmLayer]) }; var map = new Y.Map("map", {layerSets: setlist}); map.drawMap(new Y.LatLng(34.6812,135.2022), 15, "normal");4111 9 9 42. http://inuro.in/yolp/osm.html 4211 9 9 43. [email protected] http://twitter.com/inuro http://facebook.com/inuro 4311 9 9