スライダーバーを利用した雨雲レーダー情報の表示
最後に、スライダーバーを利用して2時間前から1時間後までの雨雲レーダー情報を表示できるようにします。
StoryBoardを利用して[Slider]と[Label]をViewに配置します。
- [Slider]の[Value]を[Minimum=-120][Maximum=60][Current=0]に設定します
- [Label]を[Background=White Color]に設定します
[Show the Assistant View]に変更し、メンバ変数とイベントを設定します。
#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
- (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];
}
}
}
おわりに
いかがでしたでしょうか? 今回の記事や「スマホアプリ開発の最新トレンド!ぜったい外せない位置情報活用術」の記事などを参考にしていただきつつ、YOLPの提供するAPI/SDKを活用して、面白くて便利なアプリ・サービスを開発いただけますと幸いです。
また、本稿でも利用している「雨雲レーダー情報表示」などに対応した、Yahoo!地図アプリも無償(iOS版、Android版)で提供しております。ぜひ併せてご利用ください。


