追記 2010/03/03: ScrollViewはいらなかったねw.
動機:
この記事を読んだ.
Snow Leopard で Core Location Framework が使えるMOONGIFT: » Snow Leopard向け。位置情報取得デモ「whereami」:オープンソースを毎日紹介
ここにコードがあるらしい.victor’s whereami at master - GitHub http://github.com/victor/whereami
ということでやってみる.
やったこと1:
とりあえずまねる.
1. MacPortsでgitをいれる.$ sudo port install git-core
2. download$ git clone git://github.com/victor/whereami.git
3. Xcodeプロジェクトを起動
whereamiフォルダのwhereami.xcodeprojをダブルクリック.
4. ビルドと実行
5. 実行内容について
こちらを参照のこと.MOONGIFT: » Snow Leopard向け。位置情報取得デモ「whereami」:オープンソースを毎日紹介
やったこと2:
WebViewと連携させてみよう.
1.CocoaProject(Sample_CoreLocation)を作成.
1.1作成する.
1.2プロジェクトに既存のフレームワークを追加する.
WebKit.framework,CoreLocation.frameworkを追加する.
こんな感じになるはず.
2.コード
Sample_CoreLocationAppDelegate.h
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
#import <CoreLocation/CoreLocation.h>
@interface Sample_CoreLocationAppDelegate : NSObject <NSApplicationDelegate, CLLocationManagerDelegate>
{
NSWindow *window;
WebView *webView;
CLLocationManager * manager;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet WebView *webView;
- (void)_requestMapWithLa:(float)la
ln:(float)ln;
@end
Sample_CoreLocationAppDelegate.m
#import "Sample_CoreLocationAppDelegate.h"
@implementation Sample_CoreLocationAppDelegate
@synthesize window;
@synthesize webView;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(webViewProgressFinished:)
name:WebViewProgressFinishedNotification
object:nil];
manager = [[CLLocationManager alloc] init];
[manager setDelegate:self];
[manager startUpdatingLocation];
}
- (void)webViewProgressFinished:(NSNotification*)notification
{
NSLog(@"finished");
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
[self _requestMapWithLa:newLocation.coordinate.latitude
ln:newLocation.coordinate.longitude];
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
{
NSLog(@"%@: %@",[error localizedDescription],
[error localizedFailureReason]);
[self _requestMapWithLa:35. ln:135.];
}
- (void)_requestMapWithLa:(float)la
ln:(float)ln
{
NSString *format= @"http://maps.google.co.jp/maps?q=%f,%f&output=embed";
NSString *urlString= [NSString stringWithFormat:format,la,ln];
NSURL *URL= [NSURL URLWithString:urlString];
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:URL]];
}
@end
3.InterfaceBuilderでMainMenu.xibを料理
3.1WindowイッパイになるようにScrollViewを貼り,その中に同様にWebViewを貼る.
それぞれInspectorのSizeタブ内のAutosizingで領域イッパイになるようにしておく.
3.2Sample Core Location App DelegateのOutletにWebViewを登録する.
4.実行
4.1ダイアログで利用を聞かれる.
4.2'許可しない'を選ぶ又はエラーなら緯度35,経度135にしてGoogleMapを呼び出す.
4.3'OK'を選ぶと求められた位置でGoogleMapを呼び出す.
format中の'&output=embed'がなければ通常の表示.
0 件のコメント:
コメントを投稿