2010-11-13 3 views
0

J'ai ce code où je faisUIMapKit - obtenir les annotations de serveur pour différentes régions

  1. dès que le chargement de la carte avec les utilisateurs emplacement actuel - je donne une durée de Teh carte

    durée .latitudeDelta = 0,2; span.longitudeDelta = 0,2;

  2. Ensuite, j'envoyer appel API avec en haut à gauche de latitude, et en bas à droite lng lat, lng

    CLLocationCoordinate2D topLeft, bottomRight; topLeft = [mapView convertPoint: CGPointMake (0, 0) toCoordinateFromView: mapView]; CGPoint pointBottomRight = CGPointMake (mapView.frame.size.width, mapView.frame.size.height); bottomRight = [mapView convertPoint: pointBottomRight àCoordinateFromView: mapView];

  3. J'appelle cette méthode à chaque fois il y a une région changement

    • (void) Mapview: (MKMapView *) Mapview regionDidChangeAnimated: (BOOL) animé {

Le problème - J'ai besoin d'obtenir de nouvelles broches de l'API - seulement quand il y a une nouvelle région et non quand l'utilisateur fait un zoom sur le sens que je ne veux pas de broches multiples pour le même emplacement.

Si j'ai une grande région, disons X. et A, B, C, D à l'intérieur. Supposons que je commence par X - dire carte du globe entier - je reçois des broches - maintenant si l'utilisateur zoome en zoom arrière ou fait ce que je ne veux jamais appeler l'API car j'ai toutes les broches. Maintenant, si je commence par A - jette une carte de NY et je zoom avant (pas besoin d'appeler l'API), mais si je passe à la région B - disons Washington DC - je dois appeler l'API.

J'espère que vous comprenez ce que je demande - des suggestions.

Toute aide serait appréciée.

Répondre

0

je ferais deux choses différentes pour gérer cela:

D'abord, ajoutez un UUID à toutes vos annotations sur le serveur afin que vous puissiez les identifier de façon unique. Utilisez l'UUID pour stocker vos annotations à l'écran dans un NSDictionary. Deuxièmement, lorsqu'un utilisateur zoome, faites la demande pour la région agrandie et vérifiez si les annotations que vous avez téléchargées correspondent à l'une des annotations de votre dictionnaire. S'ils correspondent, supprimez les données téléchargées, si elles ne correspondent pas, ajoutez-les à la carte et à votre dictionnaire.

Questions connexes