cocos2d-xでiOSデフォルトのMapViewを表示する
cocos2d-xではデフォルトでMapViewのような物が無いので(当たり前といえば当たり前)、地図を表示させる部分のみネイティブで実装する必要がある。
とりあえずiOS版だけメモ。
// HelloWorldScene.cpp // メインの実装ファイル // ……省略…… // MapViewを開始する void HelloWorld::startMapView() { // native viewと相性が悪いため一旦止める // MapView終了後Director::sharedDirector()->resume();でcocos2d-x側に復帰 Director::sharedDirector()->pause(); MapView::showMap(); } // ……省略……
// MapView.h // MapViewとブリッジするクラス #ifndef MapView_h #define MapView_h class MapView { public: static bool showMap(); }; #endif
// MapView.mm // iOSのネイティブ実装 #import "MapView.h" #import <MapKit/MapKit.h> // 事前にMapKitを導入しておく // cocos2d-xと連携するためには以下の2行が必要らしい #include "deprecated/CCString.h" using namespace cocos2d; void MapView::showMap() { // 復帰時には[mv removeFromSuperview];で削除 MKMapView *mv = [[MKMapView alloc] init]; mv.frame = CGRectMake(0,0,320,480); UIWindow *window = [UIApplication sharedApplication].keyWindow; [window addSubview:mv]; }