2013-03-09 9 views
5

Ho solo una domanda e non riesco a trovarlo da nessuna parte.Come implementare l'SDK di Google Maps per iOS

I "m nuovo per lo sviluppo iOS e cercando di utilizzare Google Maps all'interno della mia applicazione.

sono andato attraverso l'esempio che ti danno 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 

Ma, come si può vedere il loro set self.view = mapView_; e la classe UIView non dispone di una funzione di visualizzazione.

voglio la mappa di essere all'interno di un UIView che ho che è all'interno di un altro ViewController

Ti ho già perso? Entrambi i modi qui sono un'immagine. enter image description here

Quindi all'interno della vista (o spazio) voglio caricare la mappa.

Grazie ragazzi per l'aiuto.

+0

Ho appena provato tutto ciò che forniscono, che è un esempio in cui si esegue un ViewController e si carica la mappa. (Aggiornato sopra) – Claud

+0

puoi aggiungere la tua vista mappa come sottoview? 'self.view addSubview: mapView' –

risposta

4

Ho trovato una soluzione che funziona per me se qualcuno ha bisogno di fare qualcosa di simile.

Ho appena usato una vista contenitore e poi fatto separato classe UIViewController (che ha la google maps sdk code aggiungere una sezione mappa) e poi agganciato fino al mio ViewController principale tramite [self.view addSubview:googleMapsView]; googleMapsView essendo ritengo contenitore che ho collegato al ViewController principale.

6

Quindi hai un GMSMapView. E puoi fare in una vista una sottomenu di un'altra nell'interfaccia con addSubview:. Non lo farei in loadView se fossi in te, però. viewDidLoad è la prima buona opportunità.

Penso che il tuo vero problema sia che sei molto più avanti di te. Stai provando a farlo senza sapere come funzionano le viste, come funzionano i controller di visualizzazione, ecc. Ti consiglio di fare un respiro profondo e di imparare a programmare iOS prima di saltare con tutti e quattro i piedi. Altrimenti non sai cosa significa il tuo codice (o il codice di Google).

+0

Hai ragione che ho bisogno di saperne di più ed è per questo che ho chiesto. Voglio solo sapere qual è il modo migliore per farlo. – Claud

+0

Beh, penso di averlo risposto. È necessario conoscere le viste e le sottoview, ottenere un riferimento a una vista attraverso una presa, caricare la vista di un controller di visualizzazione e utilizzare una variabile di istanza per fare riferimento alla presa e così via. Questa è tutta roba di programmazione iOS di base; non ha nulla a che fare con Google Maps. Quando sai tutto questo, come mettere un GMSMapView nella tua interfaccia sarà completamente ovvio. – matt

+0

@matt: su una nota diversa, sapete quanto bene le app basate su google maps sono approvate da Apple? Non sono sicuro di questo. –

4

Ho fatto esattamente la stessa cosa here.

È sufficiente aggiungere una vista del tipo GMSMapView tramite il generatore di interfaccia e quindi impostare le proprietà nel controller.

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

Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo riguardo a come e/o perché risolve il problema migliorerebbe il valore a lungo termine della risposta. –