2013-03-09 16 views
5

Ich habe nur eine Frage und kann nicht scheinen, es irgendwo zu finden.So implementieren Sie iOS Google Maps SDK

ich "bin neu in iOS Entwicklung und versuchen, Google Maps innerhalb meiner Anwendung zu verwenden.

Ich ging durch das Beispiel geben sie dir here.

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

@implementation DemoViewController { 
    GMSMapView *mapView_; 
} 

- (void)loadView { 
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 
                  longitude:103.848 
                   zoom:12]; 
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
    self.view = mapView_; 
} 

@end 

Aber wie Sie das sehen, können sie festlegen self.view = mapView_; und die UIView Klasse nicht über eine view-Funktion.

ich die Karte will in einem UIView ich, dass in einer anderen Viewcontroller

ist sein müssen

Habe ich dich schon verloren? Wie auch immer, hier ist ein Bild. enter image description here

Also innerhalb der Ansicht (oder Leerzeichen) möchte ich die Karte laden.

Danke Jungs für die Hilfe.

+0

Ich habe gerade versucht, was sie bieten, das ist ein Beispiel, wo Sie einen ViewController machen und die Karte laden. (Aktualisiert oben) – Claud

+0

Sie können Ihre Mapview als Subview hinzufügen? 'self.view addSubview: mapView' –

Antwort

4

Ich fand eine Lösung, die für mich funktioniert, wenn jemand etwas Ähnliches tun muss.

habe ich nur einen Container Ansicht und dann machte separaten UIViewController Klasse (dh die google maps sdk code hat einen Kartenausschnitt hinzufügen) und hakte es dann zu meinem Haupt-Viewcontroller bis unter Verwendung [self.view addSubview:googleMapsView]; googleMapsView meine Container Ansicht ist, dass ich mit dem Internet verbunden Haupt-ViewController.

6

Sie haben also eine GMSMapView. Und Sie können eine Unteransicht eines anderen in der Schnittstelle mit addSubview: anzeigen. Ich würde es nicht in loadView tun, wenn ich du wäre. viewDidLoad ist die früheste gute Gelegenheit.

Ich denke, Ihr echtes Problem ist, dass Sie sich weit voraus sind. Sie versuchen dies zu tun, ohne zu wissen, wie Ansichten funktionieren, wie View-Controller funktionieren usw. Ich empfehle Ihnen, tief durchzuatmen und etwas über iOS-Programmierung zu lernen, bevor Sie mit allen vier Füßen springen. Ansonsten weißt du nicht, was dein Code (oder Googles Code) eigentlich bedeutet.

+0

Sie haben Recht, dass ich mehr lernen muss und deshalb fragte ich. Ich möchte nur wissen, wie das am besten funktioniert. – Claud

+0

Nun, ich denke, ich habe das beantwortet. Sie müssen über Ansichten und Unteransichten Bescheid wissen, einen Verweis auf eine Ansicht über eine Steckdose erhalten, die Ansicht eines Ansichts-Controllers laden und eine Instanzvariable verwenden, um auf die Steckdose usw. zu verweisen. Das ist alles grundlegende iOS-Programmierung Zeug; Es hat nichts mit Google Maps zu tun. Wenn Sie all das wissen, wird es offensichtlich, wie Sie ein GMSMapView in Ihre Oberfläche einfügen. – matt

+0

@matt: Weißt du zufällig, wie gut Google Maps basierte Apps von Apple genehmigt sind? Ich bin mir da nicht sicher. –

4

Ich habe eine genaue gleiche Sache here.

Einfach eine Ansicht des Typs GMSMapView über den Schnittstellen-Builder hinzugefügt und dann die Eigenschaften im Controller eingerichtet.

1
Please try below code. 
@property (strong, nonatomic) IBOutlet GMSMapView *mapView; 
-(void)addAllPinsOnMapView 
{ 
arrMapPin=[[NSMutableArray alloc] init]; 
for(int i = 0; i < arrOfferList.count; i++) 
{ 
    GMSCameraPosition *cameraPosition=[GMSCameraPosition cameraWithLatitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue] longitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue] zoom:12]; 
    // mapView = [GMSMapView mapWithFrame:CGRectZero camera:cameraPosition]; 
    _mapView.camera = cameraPosition; 
    _mapView.myLocationEnabled=YES; 

    GMSMarker *marker=[[GMSMarker alloc]init]; 
    marker.position=CLLocationCoordinate2DMake([[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue], [[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue]); 
    marker.title = [[arrOfferList objectAtIndex:i] objectForKey:@"business"]; 
    marker.map=_mapView; 
    _mapView.delegate = self; 
} 
} 
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker: 
(GMSMarker *)marker { 
NSPredicate *result; 
result=[NSPredicate predicateWithFormat:@"business CONTAINS[c] %@",marker.title]; 
NSArray * array = [arrOfferList filteredArrayUsingPredicate:result]; 
OfferDetailsViewController *objOfferDetailsViewController = [[OfferDetailsViewController alloc]init]; 
objOfferDetailsViewController.dictOfferDetails=[array objectAtIndex:0]; 
[self.navigationController pushViewController:objOfferDetailsViewController animated:YES]; 
} 
- (IBAction)btnLocateMe:(UIButton *)sender 
{ 
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Latitude"] floatValue] longitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Longitude"] floatValue] zoom:14]; 
[_mapView animateToCameraPosition:camera]; 
} 
+0

Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontextes hinsichtlich dessen, wie und/oder warum er das Problem löst, den langfristigen Wert der Antwort verbessern. –

Verwandte Themen