Top Banner
1 Yahoo! JAPANのエンジニアが その場で作るスマホ地図サービス ヤフー株式会社 大江 啓之 30分クッキング
43

Yolp30分クッキング 2012北海道

Jan 15, 2015

Download

Documents

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Yolp30分クッキング 2012北海道

1

Yahoo! JAPANのエンジニアが その場で作るスマホ地図サービス

ヤフー株式会社

大江 啓之

30分クッキング

Page 2: Yolp30分クッキング 2012北海道

2

Yahoo! Open Local Platform ?

• Yahoo! JAPANの提供する地図・地域情報に関するさまざまなAPI/SDKです。

地域・ 拠点情報DB

地図DB ルート

DB

YOLP APIs

YOLP SDKs

YOLPカセット ギャラリー ユーザ

DB

Page 3: Yolp30分クッキング 2012北海道

3

Yahoo! JavaScriptマップAPI

Yahoo!スタティックマップAPI

Yahoo! iOSマップSDK

Yahoo! AndroidマップSDK

Yahoo!ローカルサーチAPI

Yahoo!ジオコーダAPI

Yahoo!リバースジオコーダAPI

YOLPカセットギャラリー

カセットサーチAPI

経路地図API 施設内検索API

コンテンツジオコーダAPI

ルート沿い検索API

2点間距離API

業種マスターAPI

店舗名寄せAPI

測地系変換API

標高API

SilverlightマップAPI SilverlightマップSDK

Webページで地図

スマホアプリで地図 POIホスティング

POI検索・住所検索

その他の便利API

16 APIs &

3 SDKs &

1 Service

Page 4: Yolp30分クッキング 2012北海道

4

Who Uses YOLP?

Page 5: Yolp30分クッキング 2012北海道

5

Page 6: Yolp30分クッキング 2012北海道

6

Page 7: Yolp30分クッキング 2012北海道

7

ライブコーディング

スタート

Page 8: Yolp30分クッキング 2012北海道

8

1.環境構築!!

Androidの構築方法については、 Yahoo! JAPANから検索して調べてね!

Page 9: Yolp30分クッキング 2012北海道

9

2.アプリケーションIDを取得し、 書き換えます。

https://e.developer.yahoo.co.jp/webservices/register_application

* * * * *

* * * * *

* * * * * * * *

Page 10: Yolp30分クッキング 2012北海道

10

3. Yahoo! AndroidマップSDK ダウンロード!!

http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/androidsdk/

Page 11: Yolp30分クッキング 2012北海道

11

4. 「YMapRouteApp」プロジェクト作成!!

Page 12: Yolp30分クッキング 2012北海道

12

5. プロジェクトに Yahoo! AndroidマップSDK

を組み込む!!

Page 13: Yolp30分クッキング 2012北海道

13

まずは、地図を表示します

YOLP30分クッキング

Page 14: Yolp30分クッキング 2012北海道

14

6. 地図を表示させみよう!!

import jp.co.yahoo.android.maps.*; public class YMapAppActivity extends MapActivity { }

まずはMapActivityを継承させる。

Page 15: Yolp30分クッキング 2012北海道

15

@Override public void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); //MapViewインスタンス作成 MapView mapView = new MapView(this,”APPID”); //ActivityにMapViewを追加 setContentView(mapView); }

MapView作成しActivityに追加しよう。

Page 16: Yolp30分クッキング 2012北海道

16

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

AndroidManifest.xmlに ネットワーク、GPSのパーミッションを記述。

Page 17: Yolp30分クッキング 2012北海道

17

地図の表示ができましたー!!

Page 18: Yolp30分クッキング 2012北海道

18

現在位置を表示します

YOLP30分クッキング

Page 19: Yolp30分クッキング 2012北海道

19

5.現在位置に地図を移動させよー!!

private static final int MENUITEM_GPS = 1; @Override public boolean onCreateOptionsMenu(Menu menu){ boolean ret=super.onCreateOptionsMenu(menu); menu.add(Menu.NONE,MENUITEM_GPS,Menu.NONE,"現在位置"); return ret; }

ちょっとメニューを追加・・・。

Page 20: Yolp30分クッキング 2012北海道

20

@Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case MENUITEM_GPS: return true; } return false; }

Page 21: Yolp30分クッキング 2012北海道

21

//MyLocationOverlayインスタンス作成 mMyLocationOverlay = new MyLocationOverlay(getApplicationContext(), mMapView); //MyLocationOverlayインスタンス作成 mMyLocationOverlay.enableMyLocation(); //MyLocationOverlayをMapViewに追加 mMapView.getOverlays().add(mMyLocationOverlay);

MyLocationOverlayを使って、 現在位置の地図を表示しよう!!

private MyLocationOverlay mMyLocationOverlay = null;

Page 22: Yolp30分クッキング 2012北海道

22

//位置情報が更新されて場合、地図の移動を行う mMyLocationOverlay.runOnFirstFix(new Runnable(){ public void run() { if (mMapView.getMapController() != null) { //現在位置座標を取得 GeoPoint p = mMyLocationOverlay.getMyLocation(); mMapView.getMapController().animateTo(p); } } });

MyLocationOverlayを使って、 現在位置の地図を表示しよう!!

Page 23: Yolp30分クッキング 2012北海道

23

現在位置の表示ができました!!

Page 24: Yolp30分クッキング 2012北海道

24

近くのコンビニを検索します

YOLP30分クッキング

Page 25: Yolp30分クッキング 2012北海道

25

7.Yahoo!ローカルサーチAPIを使って、 近所のコンビニを探そう!!

http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html

Page 26: Yolp30分クッキング 2012北海道

26

YOLP APIを使うということは・・。

YOLP API

インターネット

インターネット(HTTP)を経由しAPIにリクエストを送信し、レスポンスを受信します。

Page 27: Yolp30分クッキング 2012北海道

27

YolpLocalSearchについて。

YolpLocalSearchはYahoo!ローカルサーチAPIに

アクセスするために今回のセミナー用に用意したクラスです。 お手元のYolpLocalSearch.javaのソース資料をご覧ください。 ※ソースはダウンロードもできます。

Page 28: Yolp30分クッキング 2012北海道

28

YMapRouteAppActivity

YolpLocalSearch

AsyncTask

::doInBackground ::onPostExecute

サブスレッド内で実行 APIにリクエスト送信、受信処理を行う。

Executeでサブスレッド実行。 YolpLocalSearchListener より検索結果を返す。

サブスレッド終了後に実行される。

レスポンスから必要なデータを取り出す。

Page 29: Yolp30分クッキング 2012北海道

29

private static final int MENUITEM_SEARCH = 2; @Override public boolean onCreateOptionsMenu(Menu menu){ boolean ret=super.onCreateOptionsMenu(menu); menu.add(Menu.NONE,MENUITEM_GPS,Menu.NONE,"現在位置"); menu.add(Menu.NONE,MENUITEM_SEARCH,Menu.NONE,“検索"); return ret; }

またまたメニューを追加・・・。

Page 30: Yolp30分クッキング 2012北海道

30

case MENUITEM_SEARCH: YolpLocalSearch yolpLocalSearch = new YolpLocalSearch(mMapView.getMapCenter(),this); yolpLocalSearch.execute("コンビニ"); return true;

Yahoo!ローカルサーチAPIにアクセスし近所のコンビニを検索!!

public class YMapRouteAppActivity extends Activity implements YolpLocalSearchListener {

Page 31: Yolp30分クッキング 2012北海道

31

Yahoo!ローカルサーチAPIを使う!!

http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch

“?appid=アプリケーションID“+ "&query="+query+ //キーワード "&lat="+mCenter.getLatitudeE6()/1E6+ //検索中心 緯度 "&lon="+mCenter.getLongitudeE6()/1E6+ //検索中心 経度 “&dist=2”+ //範囲 中心半径(2km) "&sort=dist"; //近い順ソート

Page 32: Yolp30分クッキング 2012北海道

32

public boolean finishYolpLocalSearch(String name, GeoPoint gp) { //ピンを表示 PinOverlay pinOverlay = new PinOverlay(PinOverlay.PIN_VIOLET); //MapViewにPinOverlayを追加 mMapView.getOverlays().add(pinOverlay); //ピンの位置を設定 pinOverlay.addPoint(gp,null); }

検索結果を受け取り、ピンを配置!!

Page 33: Yolp30分クッキング 2012北海道

33

//ポップアップ PopupOverlay popupOverlay = new PopupOverlay(){ @Override public void onTap(OverlayItem item){ //ポップアップをタッチした際の処理 } }; //pinOverlayにPopupOverlayを設定 pinOverlay.setOnFocusChangeListener(popupOverlay); //MapViewにPopupOverlayを追加 mMapView.getOverlays().add(popupOverlay); //pinOverlayにコンビニ位置、コンビニ名を設定 pinOverlay.addPoint(gp,name,name);

ピンをタップ、ポップアップが表示!!

Page 34: Yolp30分クッキング 2012北海道

34

ピンが表示されましたー!!

Page 35: Yolp30分クッキング 2012北海道

35

コンビニまでのルートを検索

YOLP30分クッキング

Page 36: Yolp30分クッキング 2012北海道

36

private static final int MENUITEM_ROUTE_SEARCH = 3; @Override public boolean onCreateOptionsMenu(Menu menu){ boolean ret=super.onCreateOptionsMenu(menu); menu.add(Menu.NONE,MENUITEM_GPS,Menu.NONE,"現在位置"); menu.add(Menu.NONE,MENUITEM_SEARCH,Menu.NONE,“検索"); menu.add(Menu.NONE,MENUITEM_ROUTE_SEARCH,Menu.NONE,"ルート検索"); return ret; }

またまたメニューを追加・・・。

case MENUITEM_ROUTE_SEARCH: return true;

Page 37: Yolp30分クッキング 2012北海道

37

//RouteOverlayインスタンス作成 RouteOverlay routeOverlay = new RouteOverlay(this,”APPID"); //目的地名 routeOverlay.setGoalTitle(mName); //出発地(現在位置)、最寄りのコンビニ位置を設定 routeOverlay.setRoutePos(mMyLocationOverlay.getMyLocation(),mGp,RouteOverlay.TRAFFIC_WALK);

現在位置からコンビニまでの ルートを検索!! public class YMapRouteAppActivity extends Activity implements YolpLocalSearchListener, RouteOverlayListener{

Page 38: Yolp30分クッキング 2012北海道

38

//RouteOverlayListener設定 routeOverlay.setRouteOverlayListener(this); //検索実行 routeOverlay.search(); //RouteOverlayをMapViewに追加 mMapView.getOverlays().add(routeOverlay);

Page 39: Yolp30分クッキング 2012北海道

39

public boolean errorRouteSearch(RouteOverlay arg0, int arg1) { mDialog.dismiss(); mDialog = null; return false; } public boolean finishRouteSearch(RouteOverlay arg0) { mDialog.dismiss(); mDialog = null; return false; }

ルート検索完了!! クルクルを止めますー。

Page 40: Yolp30分クッキング 2012北海道

40

ルートが表示されましたー!!

Page 42: Yolp30分クッキング 2012北海道

42

http://1st.geocities.jp/yjmapstaff/yolp/sdk/hokaiosc.zip

各種ファイルをダウンロード!

Page 43: Yolp30分クッキング 2012北海道

43

ありがとうございました

- THE END -