SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

10分で出来る雨雲チェックiPhoneアプリ!
YOLPで作る簡単便利地図アプリ

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

スライダーバーを利用した雨雲レーダー情報の表示

 最後に、スライダーバーを利用して2時間前から1時間後までの雨雲レーダー情報を表示できるようにします。

 StoryBoardを利用して[Slider]と[Label]をViewに配置します。

  • [Slider]の[Value]を[Minimum=-120][Maximum=60][Current=0]に設定します
  • [Label]を[Background=White Color]に設定します

 [Show the Assistant View]に変更し、メンバ変数とイベントを設定します。

ViewController.h
#import <UIKit/UIKit.h>
#import <YMapKit/YMapKit.h> //YMapKit.frameworkのヘッダーファイルをインポート

//デリゲートの追加
@interface ViewController : UIViewController <YMKMapViewDelegate, YMKWeatherOverlayDelegate> {
    YMKMapView *map; //YMKMapViewインスタンス用ポインタ
    YMKWeatherOverlay *weatherOverlay; //YMKWeatherOverlayインスタンス用ポインタ
}

@property (weak, nonatomic) IBOutlet UISlider *weatherSlider;
@property (weak, nonatomic) IBOutlet UILabel *weatherLabel;
- (IBAction)weatherSlider:(id)sender;

@end
ViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    ・・・
    
    //雨雲時刻表示用ラベル、スライダーを前面に表示
    [self.view addSubview:_weatherLabel];
    [self.view addSubview:_weatherSlider];
}

//overlay追加イベント
- (YMKOverlayView*)mapView:(YMKMapView *)mapView viewForOverlay:(id )overlay
{
    //追加されたoverlayがYMKWeatherOverlay か確認
    if([overlay isKindOfClass:[YMKWeatherOverlay class]] ){
        //YMKWeatherOverlayView作成
        ・・・
        //初回雨雲時刻を取得してラベルに表示
        [self finishUpdateWeather:weatherOverlayView];

        return weatherOverlayView ;
    }
    return nil;
}

//画面の更新が行われると通知されます
-(void)finishUpdateWeather:(YMKWeatherOverlayView*)weatherOverlayView
{
    // 表示中の雨雲時刻を取得してラベルに表示
    NSDate *nowDate = weatherOverlayView.nowDate;
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSLocale *jpLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja-JP"];
    [formatter setLocale:jpLocale];
    [formatter setDateStyle:NSDateFormatterShortStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    _weatherLabel.text = [NSString stringWithFormat:@"%@", [formatter stringFromDate:nowDate]];
}

//スライダーバーの値変更の通知
- (IBAction)weatherSlider:(id)sender {
    if ((int)_weatherSlider.value % 10 == 0){
        YMKWeatherOverlayView * overlayView = (YMKWeatherOverlayView *)[map viewForOverlay: weatherOverlay];
        if([overlayView isKindOfClass:[YMKWeatherOverlayView class]] ){
            //雨雲の時刻を設定して再表示
            [overlayView updateWeatherWithMinutes: _weatherSlider.value];
        }
    }
}
スライダーバーの変更により、雨雲レーダー情報の2時間前から1時間後の状況を確認できます
スライダーバーの変更により、雨雲レーダー情報の2時間前から1時間後の状況を確認できます

おわりに

 いかがでしたでしょうか? 今回の記事や「スマホアプリ開発の最新トレンド!ぜったい外せない位置情報活用術」の記事などを参考にしていただきつつ、YOLPの提供するAPI/SDKを活用して、面白くて便利なアプリ・サービスを開発いただけますと幸いです。

 また、本稿でも利用している「雨雲レーダー情報表示」などに対応した、Yahoo!地図アプリも無償(iOS版、Android版)で提供しております。ぜひ併せてご利用ください。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術連載記事一覧

もっと読む

この記事の著者

日比野 正樹(ヤフー株式会社)(ヒビノ マサキ(ヤフーカブシキカイシャ))

2008年ヤフー入社。「Yahoo! Open Local Platform(略称:YOLP)」の企画、SE(セールスエンジニア)を経て、現在はSDK開発やアプリ開発を担当。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7137 2013/05/24 14:00

イベント

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

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

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

メールバックナンバー