Yahoo! JAPAN が提供している iOS Map SDK という地図フレームワーク YMapKit.framework を使ってみる。
動作確認しやすいように、拡張性のないシンプルなサンプルにしてみた。

MapKit とインターフェースがほぼ同じなので同じように作ればいけるはず。

事前に mapsdk_ios.zip をダウンロードして解凍・展開しておく。これには YMapKit.framework と画像リソースファイルが入っている。
Yahoo!デベロッパーネットワーク - 地図 - iOS Map SDK

また、事前にアプリケーションIDを取得しておく。
Yahoo!デベロッパーネットワーク ヘルプ - アプリケーションIDとは

環境:
・Mac OS X 10.6.8 Snow Leopard
・Xcode 3.2.6

新規プロジェクトを作成:
Xcode のメニューから [iOS] → [Application] → [View-based Application] テンプレートを使用。

「HogeSample」という名称でプロジェクトを作成。

プロジェクトに以下のフレームワークを追加。

  • YMapKit.framework
  • UIKit.framework
  • SystemConfiguration.framework
  • CoreLocation.framework
  • CoreGraphics.framework
  • Foundation.framework

YMapKit.framework は Xcode の左ペイン [グループとファイル] → [Frameworks] を右クリックして [追加] → [既存のフレームワーク] → [その他を追加] にて Ymap/YMapKit.framework フォルダを選択して追加する。

リソースファイルの追加:

mapsdk_ios.zip ファイル内の image フォルダに含まれる各画像ファイルを、プロジェクトのリソースに追加する。

Xcode の左ペイン [グループとファイル] → [Resources] を右クリックして [追加] → [既存のファイル] にて Ymap/image 以下の画像ファイルを選択して追加する。

追加する際はお好みでいいと思うけど、今回は
「デスティネーショングループのフォルダに項目をコピーする」
「追加したフォルダに再帰的にグループを作成する」
にしてみた。

HogeSampleViewController.m というのが自動生成されているので、このファイルで


#import <YMapKit/YMapKit.h>

をインクルード(インポート?)して

viewDidLoad 関数(メソッド?)を以下のように書き換える。


- (void)viewDidLoad {
  
  [super viewDidLoad];
 
  UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
  textView.text = @"Hello World !!";
  textView.textAlignment = UITextAlignmentCenter;
  textView.font = [UIFont fontWithName:@"Arial" size:24.0f];
  textView.backgroundColor = [UIColor clearColor];
  [self.view addSubview:textView];
 
  YMKMapView* ymapView = [[YMKMapView alloc] initWithFrame:CGRectMake(0, 100, 300, 300) appid:@"アプリケーションID" ];
  ymapView.mapType = YMKMapTypeStandard;
  CLLocationCoordinate2D coord = {latitude: 35.178088, longitude:136.891022};
  YMKCoordinateSpan span = {latitudeDelta: 0.02, longitudeDelta: 0.02};
  YMKCoordinateRegion region = {coord,span};
  [ymapView setRegion:region];
  [self.view addSubview:ymapView];
 
  [textView release];
  [ymapView release];
}

『アプリケーションID』の部分には自分で取得したアプリケーションID(appid)をセットすること。

ビルドして実行すると地図が表示される。

YMapKit を使って iPhone に 地図を表示するシンプルなサンプル

この Yahoo! JAPAN の iOS Map SDK ドキュメントにチュートリアルとソースコードが載ってたけど、そのままコピペしてもうまく動かなかった。だからこのサンプルを書いたわけで。

書いてみて思ったのはどうもうまくビューのオブジェクトが乗ってなかったぽい。サンプルのコードがいけないのかコピペミス(不足分があるとか?)なのかバージョンちがいの問題なのか(Xcodeが出力するテンプレソースをベースにしたように思えない感じだった、iOS SDKとかXcodeのバージョンの問題?)、まあよくわからない。

これを使ってる人はそのままチュートリアルのコードをコピペしてちゃんと動いてるのかなぁ。

「iOS Map SDK」は、iOS向けアプリケーション開発において、Yahoo! JAPANの提供する地図機能を簡単に組み込んで使っていただけるソフトウエア開発キットです。

(中略)

「iOS Map SDK」は、以下の特徴を持っています。

日本語の世界地図の表示
地下街地図の表示
フリックによる地図移動
ピンチイン/アウトによる地図縮尺切り替え(拡大/縮小)
ダブルタップによる地図縮尺切り替え(拡大)
ツインタップ(二本指タップ)による地図縮尺切り替え(縮小)
地図上の文字を直接タッチ可能な注記タッチ機能
地図スタイルを選択して表示切り替え
現在地取得機能
マーカー(ポイント)、ライン、ポリゴン、円などのオブジェクト描画機能
ポップアップ表示機能

(中略)

「iOS Map SDK」は、以下のiOS向けアプリケーションで採用されております(2011年6月1日現在)。

Yahoo!ロコ 地図
シャカ地図
Sketch-a-Search
ポッフィ
麺通 旨いラーメンを探せ!
紅葉特集2010(2010年12月サービス終了)
Yahoo! JAPANお花見ナビ~全国1000以上のお花見スポット情報~(2011年5月サービス終了)
ドラえもん 日本全国 スタンプラリー(2011年5月サービス終了)

Yahoo!デベロッパーネットワーク - 地図 - iOS Map SDK

Ref. Yahoo!デベロッパーネットワーク - 地図 - iOS Map SDK

tags: iphone xcode mapkit ymapkit yahoo_maps_api

Posted by NI-Lab. (@nilab)