2013-06-06 2 views
0

Je suis ici parce que j'ai un problème avec le SDK Google Maps pour iOS.- [région GMSMapView]: sélecteur non reconnu - Problème avec Google Maps SDK pour iOS

Ma carte fonctionne correctement et tout fonctionne correctement.

Dans mon projet, j'essaie d'obtenir un zoom dynamique entre 2 marqueurs, afin de les voir dans le même cadre. Donc, voici mon code (je reçois quelque part dans StackOverflow aussi):

- (NSInteger)getZoomLevel 
{ 
    MKMapView *map = (MKMapView *)mapView_; 
    CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta; 
    CGFloat mapWidthInPixels = map.bounds.size.width; 
    double zoomScale = longitudeDelta * 85445659.44705395 * M_PI/(180.0 * mapWidthInPixels); 
    double zoomer = 20 - log2(zoomScale); 
    if (zoomer < 0) zoomer = 0; 
    return (NSInteger)zoomer; 
} 

Et voici comment je l'appelle:

GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; 
    [mapView_ animateWithCameraUpdate:zoomCamera]; 

    CLLocationCoordinate2D myPosition = CLLocationCoordinate2DMake(mapView_.myLocation.coordinate.latitude, mapView_.myLocation.coordinate.longitude); 
    GMSCameraUpdate *myPositionCam = [GMSCameraUpdate setTarget:myPosition]; 
    [mapView_ animateToZoom:[self getZoomLevel]]; 
    [mapView_ animateWithCameraUpdate:myPositionCam]; 

Le point est de voir 2 marqueurs dans le même cadre.

C'est ce que j'ai lorsque je tente de l'exécuter:

-[GMSMapView region]: unrecognized selector sent to instance 0x210527e0 

Toutes les idées? Ou si quelqu'un obtient un meilleur exemple de code pour obtenir le bon zoom.

Merci! :)

+2

Pourquoi lancez-vous votre instance 'GMSMapView' à' MKMapView'? Il n'hérite pas de 'MKMapView'. Et il est naturel qu'il ne réponde pas aux messages de 'MKMapView'. Pourquoi faites-vous des suppositions au lieu de lire la [documentation] (https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_map_view) –

Répondre

2

L'exemple de code que vous avez obtenu de How to calculate GMSCamera zoom a montré comment il pourrait se faire avec un MKMapView - l'intention étant de l'adapter au code équivalent pour un GMSMapView (ne pas utiliser directement le code).

Il y a une réponse plus complète (en particulier pour GMSMapView) ici:

How to setRegion with google maps sdk for iOS?

Cependant, on a demandé à ces deux questions avant que Google a ajouté une méthode fitBounds qui devrait pouvoir être utilisé au lieu d'écrire votre propre code:

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_camera_update

Je remarqué cependant que somebody reported que fitBounds ne fonctionnait pas pour eux - alors voyez comment vous allez.

1

Le problème est que vous accédez à la méthode de la région du GMSMapViewRegion qui n'existe pas (map.region en ligne: CLLocationDegrees longitudeDelta = map.region.span.longitudeDelta;).

Vous utilisez du code destiné à l'implémentation de la carte Apple dans Google, ce qui est incompatible.

Questions connexes