SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術

YOLPで挑戦~Android向け簡易道のり測定アプリを30分で作る!

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術(1)


  • X ポスト
  • このエントリーをはてなブックマークに追加

AndroidManifest.xmlに必要な設定を追加

 MapViewではネットワーク、GPSを使用するため、以下の設定が必要になります。

3kmountains.xml
<!-- MapViewを使用するのに必要な設定 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

アプリ起動時にLocationManagerを起動

 アプリ起動時にLocationManagerを起動し、位置情報を取得します。

RouteSearchActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //現在位置 (NETWORK)
    mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
    mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,0,this);
    //プログレスダイアログを表示
    mProgDialog = new ProgressDialog(this);
    mProgDialog.setMessage("現在位置取得中");
    mProgDialog.show();
}

位置情報を取得し地図を表示

 LocationListener:: onLocationChangedで位置情報を受け取り、LocationManagerを停止します。MapViewを作成し、地図の表示位置と縮尺レベルの設定を行います。地図を長押しすることで目的を決めるため、地図上での長押しイベントの発行を許可しておきます。LocationManagerで取得した位置にピンを立て、MapViewをカレントビューに追加します。これで画面上に地図が表示されます。

RouteSearchActivity.java
//位置情報取得
public void onLocationChanged(Location location) {
    //プログレスダイアログを停止
    if(mProgDialog!=null){
        mProgDialog.dismiss();
        mProgDialog = null;
    }
    //LocationManagerを停止
    mLocationManager.removeUpdates(this);

    //MapViewを作成
    mMapView = new MapView(this,"<あなたのアプリケーションID>");
    
    //地図の表示位置をLocationManagerで取得した位置に変更
    MapController mapController = mMapView.getMapController();
    GeoPoint centerPos = new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));
    mapController.setCenter(centerPos);
    
    //ズームレベルをセット
    mapController.setZoom(4);
    
    //地図上で長押しイベントの発行を許可する
    mMapView.setLongPress(true);
    
    //MapTouchListenerを設定
    mMapView.setMapTouchListener(this);
    
    //LocationManagerで取得した位置にピンを立てる
    mPinOverlay = new PinOverlay(PinOverlay.PIN_VIOLET);
    mMapView.getOverlays().add(mPinOverlay);
    mPinOverlay.addPoint(centerPos,null);
 
    //LocationManagerで取得した位置をルート開始位置とします
    mStartPos = centerPos;
    
    //MapViewをカレントビューに追加
    setContentView(mMapView);
}

次のページ
現在位置から地図を長押しした地点までのルートを検索

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術連載記事一覧

もっと読む

この記事の著者

大江 啓之(ヤフー株式会社)(オオエ ヒロユキ(ヤフーカブシキガイシャ))

2008年ヤフー入社後、ソフトバンクモバイル版地図アプリ、ドコモ版地図アプリ、BREW版路線・地図アプリなどの携帯アプリの開発を手掛け、「Yahoo! Open Local Platform(略称:YOLP)」のスマートフォン向け地図SDK(iOS Map SDK&Android Map SDK)の...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6406 2012/02/29 19:12

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング