9

この問題を検索しても、私がまったく知らないopenglに関する投稿しか得られませんでした。

ストーリーボードには、マップのコンテナとして機能するもう1つの少し小さいUIViewオブジェクトを配置したビューが1つあります。これは正常に機能しますが、コードはそれほど多くありません。UIViewのクラスをに設定しましたGMSMapView。Ctrlキーを押しながらドラッグして、対応するviewControllerへのアウトレットを作成します。この後GMSCameraPosition、特定の場所にを作成します。self.mapView出口であるを、[GMSMapView mapWithFrame:CGRectZero camera:camera];指定したカメラ位置であるカメラに設定しました。

これは機能しているようで、アプリはエラーなしで起動し、マップは作成したUIViewに表示されますが、カメラの位置は指定した場所ではありません。self.viewまた、地図の代わりに使用するとself.mapView、画面全体の正しい位置に表示されるため、位置が有効であることがわかります。

ログにエラーが表示Failed to make complete framebuffer object 8cd6され、私が言ったように、これに関する投稿は私にはまったく意味がなく、これがどのような問題であるかはわかりません。

4

5 に答える 5

12

マップビューをのフレームで初期化したためかもしれませんCGRectZeroCGRectZero使用は、ビューがビューコントローラのルートビューである場合に使用されることを意味していると思います。つまり、画面のフルサイズにサイズ変更されます。たぶんあなたはサイズを設定する必要があります、例えば:

[GMSMapView mapWithFrame:CGRectMake(0, 0, 300, 300) camera:camera];
于 2013-02-27T12:31:05.097 に答える
2

私の場合、これによりマップが機能し、適切な座標が読み込まれますが、それでも8cd6エラーがスローされます。セットアップ:ストーリーボードを使用したXcode 4.6.1 iOS 6.1

メインビュー/ビューコントローラの内部にビューがあります。

属性タブ->class= GMSMapViewの下にあるUIView(マップとなるサブビュー)が、以下のプロパティ*mapViewにリンクされていることを確認してください。

YourViewController.h:

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>
@interface YourViewController : UIViewController

//other @properties
@property (strong, nonatomic) IBOutlet GMSMapView *mapView;//linked to storyboard

@end

YourViewController.m:

#import "YourViewController.h"
#import <GoogleMaps/GoogleMaps.h> 
@interface YourViewController()
@end

/*.. ..other setup code ..*/

-(void)viewDidLoad{
    [super viewDidLoad];
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:10];
    self.mapView.camera = camera;
}

8cd6エラーは、フレーム/境界に関係しています(明らかに)。initWithFrameを実行しようとしても、何かが呼び出されない(または設定されない?)。ビューの読み込みがハングし、デフォルトでロンドンの近くの場所になります。このソリューションのsetMapViewは編集しませんでした。境界の設定をスキップして、ストーリーボードに処理させました。

それでも誰かが8cd6エラーをクリアする修正を見つけることを願っています。

于 2013-03-24T06:03:17.390 に答える
0

私もこの問題を経験しています。私のソリューションはあまりエレガントではありませんが、機能します。まず、viewController.m(@synthesize mapView = _mapView;)でアウトレットを@sythnesizeします。次に、カスタムセッターを作成します。

- (void)setMapView:(GMSMapView *)mapView {
    if (!mapView) {
        mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
    }
    _mapView = mapView;
}

これでも、表示されたエラーが発生しますが、viewDidLoad(またはビューがロードされた後に呼び出される他の場所)メソッドで、カメラを設定します。

self.mapView.camera = [GMSCameraPosition cameraWithLatitude:3 longitude:27 zoom:13];

一瞬、地図は間違っているでしょうが、私はそれがユーザーに見えないと思います。

于 2013-02-27T13:53:12.837 に答える
0

私を助けてくれた友達がいて、答えてくれてありがとう。でも、それらの答えは私が最終的に解決した方法ではありません。

使用したコード:

CLLocationDegrees lat = 59.34702;
CLLocationDegrees lon = 18.04053;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:10];
[self.mapView setCamera:camera];

ビューは、ストーリーボードのサイズを使用して、私が指定していない位置にマップを自動的に設定するため、そのフレームをいじくり回しているわけではありません。したがって、この例のようにカメラを追加するだけで済みました。これは私が話したそのエラーを取り除きました。

誰かがこれをより徹底的に説明できるより良い答えを持っているなら、それは良いでしょう。GMSMapViewしかし、これは機能します。クラスをアウトレットとして設定したビューをCtrlキーを押しながらドラッグし、作成したコードを追加します。

于 2013-02-27T14:08:41.020 に答える
0

このエラーは、GMSMapViewをサブクラス化したときに表示されました。基本的にすべての「did*」/「will*」メソッドを宣言しましたが、willMoveToWindowとdidMoveToWindowの間にエラーが発生していることがわかりました。willMoveToWindowのデバッグフレームが(0,0,0,0)であることがわかりました。基本的にこれを追加するとエラーはなくなりました。

- (void)willMoveToWindow:(UIWindow *)newWindow
{
   self.bounds = self.superview.bounds ;
   [super willMoveToWindow:newWindow] ;
}
于 2013-04-25T20:30:15.863 に答える