AndroidでGoogle Maps Android API v2利用
「Google Maps Android API v2」の利用について、
詳しくまとめてあるサイト
http://dev.classmethod.jp/smartphone/android/android-tips-25-google-maps-android-api-v2/
「Google Maps Android API v2」の利用について、
詳しくまとめてあるサイト
http://dev.classmethod.jp/smartphone/android/android-tips-25-google-maps-android-api-v2/
クラスのメソッドを、ディスパッチャークラス的なものに格納しておき
あとで呼び出して使いたいといったことがよくあるので、
メモっておく
◎メソッドのアドレスを記憶しておいて、後で呼び出すサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
// 登録するクラス class CTest { public: int member; void func() {printf("%d\n", this->member);} CTest(){} }; // ディスパッチャー template<class C> class CMng { public: void registCallback( C* instance_, void(C::*m)() ) { this->instance = instance_; this->method = m; } void call(){ (this->instance->*method)(); } void(C::*method)(); C* instance; }; void run() { // インスタンス作成 CTest t; t.member = 30; // ディスパッチャーへ呼び先を登録 CMng<CTest> mng; mng.registCallback( &t, &CTest::func ); // 実際に呼んでみる mng.call(); } |
LocationManagerの、startUpdatingLocationの後、
didUpdateLocationsが呼ばれない現象にはまった。
didFailWithErrorも実装してみたけども、そちらも呼ばれる気配なし。
iOS8にする前は呼ばれていたので、OSのアップデートが絡んでそう
とりあえず調べたら、plistへのキー追加が必要になったらしいです。
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
の二つのキーを、plistに追加して値は空文字でOK
位置サービス許可のダイアログが出るときに、メッセージとして表示される文言っぽいです。
これだけではまだ動かず、requestWhenInUseAuthorizationも必要でした。
なのでコードにするとこんなかんじ。
1 2 3 4 5 6 7 8 9 10 11 12 |
self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; [self.locationManager requestWhenInUseAuthorization]; // 取得精度 self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 更新頻度(メートル) self.locationManager.distanceFilter = kCLDistanceFilterNone; // サービスの開始 [self.locationManager startUpdatingLocation]; |
ネイティブから、stringByEvaluatingJavaScriptFromStringでJSにJSON文字列を渡し、js内でJSON.parseを利用してJSONオブジェクトを作成しようとしましたが、JSON.parseで停止してそれ以降進まなくなりました。
原因がわからず大分悩みましたが、原因はJSON文字列をシングルクォートで囲っているためでした。
◎ダメなソース
1 |
var json_obj = JSON.parse("{'a':'b'}"); |
◎OKなソース
1 |
var json_obj = JSON.parse('{"a":"b"}'); |
えーって感じですが、なぜかこれで動きました。