2

そこで、Google マップを iOS アプリケーションに追加する方法についてこのガイドに従ったところ、すべて正常に動作しました。しかし、私がやりたいのは、マップを割り当てるのではなくself.view、他のビュー内のストーリーボードにドラッグしたカスタムビューに割り当てることです(?)。マップを追加するときに、self.viewボタンなどの他の要素を追加できないためです。うーん、たぶんできるけど方法がわからない。

コード:

// Start locationmanager
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

// Set up the startposition for the camera when the app first starts.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:59.34702 longitude:18.04053 zoom:10];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = mapView_;

そのUIViewため、現在マップを含むビュー内に を作成し、ctrl をドラッグしてその中に mapView というアウトレットを作成しましたviewController。だから私はコード行を

self.view = _mapView;

self.mapView = _mapView;

しかし、これはまったく機能していないようで、空白です。self.viewとの両方self.mapsViewが のインスタンスでUIViewあるのに、なぜこれが機能しないのでしょうか?

アップデート:

これは私のviewDidLoadがatmのように見えるものです:

- (void)viewDidLoad
{
[super viewDidLoad];

[self.mapView addSubview:mapView_];

// Start locationmanager
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

// Standard cameraposition
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:59.34702 longitude:18.04053 zoom:10];
mapView_ = [GMSMapView mapWithFrame:self.mapView.frame camera:camera];


self.mapView = mapView_;
}
4

3 に答える 3

0

コードには次のものがあります。

mapView_ = [GMSMapView mapWithFrame:CGRectZero カメラ:カメラ];

CGRectZero はそのサイズをゼロにします。代わりに self.mapView.frame を使用する必要があります。

また、mapView のサブビューとして mapView_ を追加する必要があります。

[self.mapView addSubview:mapView_];
于 2013-02-26T11:05:01.057 に答える
0

プロジェクトでこれを試してください:

//
//  testViewController.m
//  maps
//
//  Created by Millén on 2013-02-25.
//  Copyright (c) 2013 JamWeb. All rights reserved.
//

#import "testViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface testViewController ()
@property(nonatomic, strong) GMSMapView *gMapView;
@end

@implementation testViewController {
    CLLocation *oldLocation;
}

-(void)loadView
{
    CLLocationDegrees lat = 59.34702;
    CLLocationDegrees lon = 18.04053;

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:10];
    self.gMapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    self.gMapView.myLocationEnabled = YES;
    self.view = self.gMapView;

    [self updateLocation];
}

- (void)viewDidLoad
{
    [super viewDidLoad];


    // Start locationmanager
    locationManager = [[CLLocationManager alloc] init];
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.delegate = self;
    [locationManager startUpdatingLocation];


}

- (IBAction)updateLocation {
    [locationManager startUpdatingLocation];
}



- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *location = [locations lastObject];

    /*
    if(!oldLocation)
    {
        oldLocation = location;
    }

    if (![location isEqual:oldLocation]) {
        GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude: location.coordinate.latitude
                                                                longitude: location.coordinate.longitude
                                                                     zoom:7];

        mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
        mapView_.myLocationEnabled = YES;
        self.view = mapView_;

        oldLocation = location;
        [locationManager stopUpdatingLocation];
    }
     */



    NSLog(@"lat%f - lon%f", location.coordinate.latitude, location.coordinate.longitude);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
于 2013-02-26T19:36:09.780 に答える