1

APIキーを作成し、グーグルが提供するデモプロジェクトで試してみましたが、グーグルマップは問題なく動作します。ただし、サンプルプロジェクトを作成し、GoogleマップSDKを統合しようとすると、実行時にクラッシュします。

従う手順

USESSTORYBOARDSとARCを無効にしてシングルビューアプリケーションを作成しました。プロジェクトのバンドル識別子を使用してAPIキーを作成しました。これはrosnMapTestです。GoogleMapsframeworkバンドルをFrameworkグループにコピーしました。リソースフォルダからフレームワークグループにGoogleMapsbundleをコピーしました次のフレームワークをすべて追加しました

<pre>
<code>
    AVFoundation.framework  
    CoreData.framework
    CoreLocation.framework 
    CoreText.framework 
    GLKit.framework 
    ImageIO.framework 
    libicucore.dylib  
    libstdc++.dylib  
    libz.dylib 
    OpenGLES.framework 
    QuartzCore.framework  
    SystemConfiguration.framework
</code>
</pre>

Fixed the default Architectures and Other Linker Flags

Imported GoogleMaps.h and added google API key in AppDelegate


<pre>
<code>
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
            // Override point for customization after application launch.
            self.viewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
            self.window.rootViewController = self.viewController;
            [self.window makeKeyAndVisible];
            [GMSServices provideAPIKey:@"AIzaSyAVEDscm0b307ZDFpOnn4zr4saLJF43E0Y"];
            return YES;
        }
</code>
</pre>

Added following code in viewcontroller

<pre>
<code>
     #import "TestViewController.h"
        #import <GoogleMaps/GoogleMaps.h>
        @interface TestViewController ()

        @end

        @implementation TestViewController
        GMSMapView *mapView_;

        - (void) viewDidLoad
        {
            [super viewDidLoad];

        }

        - (void)loadView {
            GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                                longitude:151.2086
                                                                     zoom:6];
            mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
            mapView_.myLocationEnabled = YES;
            self.view = mapView_;

            GMSMarkerOptions *options = [[GMSMarkerOptions alloc] init];
            options.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
            options.title = @"Sydney";
            options.snippet = @"Australia";
            [mapView_ addMarkerWithOptions:options];
        }


        @end
</code>
</pre>

<pre>
<code>
Error in RUNTIME: “2013-02-23 19:37:27.697 MapTest[2947:c07] +[GMSCameraPosition cameraWithLatitude:longitude:zoom:]: unrecognized selector sent to class 0xf2a4
(lldb)”
</code>
</pre>
4

3 に答える 3

2

おもう。手順 7 で設定しない場合

https://developers.google.com/maps/documentation/ios/start#add_a_map

「特定のターゲットではなくプロジェクトを選択し、[ビルド設定] タブを開きます。アーキテクチャのデフォルト値を armv7 に置き換えます。[その他のリンカー フラグ] セクションで、-ObjC を追加します。これらの設定が表示されない場合は、基本からすべての設定バーを構築します。」

于 2013-02-27T04:23:23.897 に答える
1

ストーリーボードを使用できます。iOSの生活が楽になると思います:)

ここに実用的な例があります

Google マップ コントローラーに接続された OpenGL コントローラーもあります。必要ない場合は、ViewController.m の次のコードを削除して無視できます。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    _openGLController = (OpenGLController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"openGLController"];

[self addChildViewController:_openGLController];
[self.view addSubview:_openGLController.view];
[self didMoveToParentViewController:self];

これがあれば、問題が発生した場合に役立ちます。

于 2013-04-24T07:44:02.090 に答える
0

私も同じ問題を抱えていました。-ObjC フラグを「プロジェクト」ではなく「ターゲット」の「ビルド設定」に追加してください。

PS両方の場所に追加しても壊れません。

于 2013-04-19T03:26:33.657 に答える