2017-06-01 6 views
0

Je devais montrer les emplacements autour de l'emplacement de l'utilisateur. Les informations sur les emplacements arriveront du serveur. J'utilise 'for' boucle pour analyser l'emplacement et ajouter à la carte avec la broche d'annotation. A partir de maintenant, il montre seulement le dernier endroit arrivé.
Mais l'exigence est telle que plusieurs emplacements doivent être affichés avec l'emplacement de l'utilisateur en tant que point central. A partir de maintenant, je ne peux montrer qu'une seule épingle. S'il vous plaît aider comment y parvenir?
Plusieurs emplacements dans apple watch

for (NSDictionary* dictionary in responseDict) 
{ 
     NSString *latitudeString=[NSString stringWithFormat:@"%@",[dictionary valueForKey:@"LATITUDE"]]; 
     double latitude=[latitudeString doubleValue]; 
     NSString *longitudeString=[NSString stringWithFormat:@"%@",[dictionary valueForKey:@"LONGITUDE"]]; 
     double longitude=[longitudeString doubleValue]; 
     NSLog(@"the LATITUDE AND LONGITUDE is %f, %f",latitude,longitude); 



     CLLocationCoordinate2D locationCoordinate; 
     locationCoordinate.latitude=latitude; 
     locationCoordinate.longitude=longitude; 
     [self.mapView addAnnotation:locationCoordinate withPinColor:WKInterfaceMapPinColorPurple]; 

     MKCoordinateSpan coordinateSpan = MKCoordinateSpanMake(0.05, 0.05); 
     [self.mapView setRegion:(MKCoordinateRegionMake(locationCoordinate, coordinateSpan))]; 




    } 
` 
+1

Vous semblez ajouter plusieurs annotations, mais vous pouvez zoomer sur la carte pour afficher uniquement la dernière annotation – Paulw11

Répondre

0

zoom sur un emplacement unique à chaque itération de la boucle, donc finalement vous finissez par zoomé sur le dernier emplacement. Malheureusement, WKInterfaceMap n'a pas de méthode showAnnotations comme MKMapView, donc vous devez écrire une fonction vous-même pour obtenir un MKCoordinateRegion incluant plusieurs annotations.

Je n'ai pas écrit de Obj-C pendant un certain temps, mais voici la fonction de Swift qui montre deux annotations sur une carte et fonctionne sur watchos:

func showTwoMapCoordinates(first: CLLocationCoordinate2D, second: CLLocationCoordinate2D)->MKCoordinateRegion{ 
    let center = CLLocationCoordinate2D(latitude: (first.latitude+second.latitude)/2, longitude: (first.longitude+second.longitude)/2) 
    var latDelta:CLLocationDegrees { 
     let delta = abs((first.latitude-second.latitude)*1.4) 
     if delta > 0 { 
      return delta 
     } else { 
      return 0.1 
     } 
    } 
    var lonDelta:CLLocationDegrees { 
     let delta = abs((first.longitude-second.longitude)*1.4) 
     if delta > 0 { 
      return delta 
     } else { 
      return 0.1 
     } 
    } 
    let span = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lonDelta) 
    return MKCoordinateRegion(center: center, span: span) 
} 

Pour étendre à n points, où n> 2, il vous suffit de parcourir chaque paire de points que vous voulez afficher, de trouver les deltas maximum de la même manière que dans la fonction ci-dessus et de définir le centre et l'étendue en utilisant la fonction ci-dessus les deltas max.