2016-04-13 2 views
0
[{"name":"Mocha","latitude":17.418694 , "longitude":78.445116}, 
{"name":"Rock Castle","latitude":17.420865 , "longitude":78.442219}, 
{"name":"RnB Select","latitude":17.420639 , "longitude":78.443635} 
] 
- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray<CLLocation *> *)locations{ 
    location=locations.lastObject; 
    [[self latitudeValue] setText:[NSString stringWithFormat:@"%.6f",location.coordinate.latitude]]; 
    [[self longnitudeValue] setText:[NSString stringWithFormat:@"%.6f",location.coordinate.longitude]]; 
// [[self altitudeValue] setText:[NSString stringWithFormat:@"%.2f feet",location.altitude*METERS_FEET]]; 
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, 2*METERS_MILE, 2*METERS_MILE); 
    [[self mapView] setRegion:viewRegion animated:YES]; 
    NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:@"myStoredObject"]; 
    NSDictionary *zeroth=arr[0]; 
    NSLog(@"oth position,,,,%@",zeroth); 
    NSDictionary *firstPosition = arr[1]; 
    NSLog(@"first position is .....%@",firstPosition); 
    NSDictionary *secondPosition = arr[2]; 
    NSLog(@"second position is .....%@",secondPosition); 


    MKPointAnnotation *point2 = [[MKPointAnnotation alloc] init]; 

    point2.coordinate =CLLocationCoordinate2DMake([[firstPosition valueForKey:@"latitude"] doubleValue], [[firstPosition valueForKey:@"longitude"] doubleValue]); 
    point2.title =[firstPosition valueForKey:@"name"]; 
[self.mapView addAnnotation:point2]; 
    MKPointAnnotation *point3 = [[MKPointAnnotation alloc] init]; 
    point3.coordinate = CLLocationCoordinate2DMake([[firstPosition valueForKey:@"latitude"] doubleValue], [[firstPosition valueForKey:@"longitude"] doubleValue]); 
    point3.title =[firstPosition valueForKey:@"name"]; 
    [self.mapView addAnnotation:point3]; 

    MKPointAnnotation *point4 = [[MKPointAnnotation alloc] init]; 
    point4.coordinate = CLLocationCoordinate2DMake([[secondPosition valueForKey:@"latitude"] doubleValue], [[secondPosition valueForKey:@"longitude"] doubleValue]); 
    point4.title =[secondPosition valueForKey:@"name"]; 
    [self.mapView addAnnotation:point4]; 

MKCircle *circleoverlay = [MKCircle circleWithCenterCoordinate:_mapView.userLocation.coordinate radius:1000]; 
    [circleoverlay setTitle:@"Circle"]; 
    [_mapView addOverlay:circleoverlay]; 
    NSLog(@"circle is drawn"); 




} 

code ci-dessus montrant les données JSON ... Ce mes données JSON qui Iget d'URL en écrivant le code ci-dessousComment ajouter les données JSON à NSARRAY?

NSMutableURLRequest *tRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.ctrlm.in/kvikdata/locations.json"]]; 
     NSLog(@"url is %@",tRequest); 
     [tRequest setHTTPMethod:@"GET"]; 
     [tRequest setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
    [NSURLConnection 
    sendAsynchronousRequest:tRequest 
    queue:queue 
    completionHandler:^(NSURLResponse *response, 
         NSData *data, 
         NSError *error) { 
     if ([data length] >0 && error == nil){ 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSError *error; 
       id jsonObject = [NSJSONSerialization 
            JSONObjectWithData:data 
            options:NSJSONReadingAllowFragments 
            error:&error]; 
       NSLog(@"Successfully deserialized.2222222..%@",jsonObject); 

NSArray * myArr = [copie JSONObject]; // ici myArr = yourData de votre réponse. je prends nil pour démontrer NSLog (@ "mon tableau est% @", myArr);

 NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; 

     [myDefaults setObject:myArr forKey:@"myStoredObject"]; // by this you can store object 

       if (jsonObject != nil && error == nil){ 
        NSLog(@"Successfully deserialized...%@",jsonObject); 
       } 
      }); 
     } 
    }]; 

en écrivant les NSUserDefaults premières données est mise à jour selon l'objet JSON .. à nouveau quand je change les noms des lieux de @ « mocha » à @ « test1 » est-ce pas mis à jour ... pourquoi? Merci u

+0

Les données json que vous avez publiées ressemblent à un tableau. –

+0

Pouvez-vous s'il vous plaît indent correctement et généralement nettoyer votre code? C'est plus ou moins illisible. Soyez également cohérent, où vous mettez des espaces et où pas! –

Répondre

0

L'objet que vous obtenez est déjà tableau. Il suffit d'utiliser NSArray * jsonObject au lieu de id jsonObject. Click here pour le tutoriel de tutsplus. Raywenderlich est également une bonne option comme mentionné dans une autre réponse.

Vous devez utiliser AFNetworking pour appeler le service Web. AFNetworking - Github

J'espère que cela vous aidera. :)

mise à jour selon la question dans le commentaire:

Vous devez utiliser la base de données pour stocker votre dictionnaire ou un tableau que vous obtenez de serveur. S'il y a trop de données et de relations complexes entre les données, vous pouvez utiliser sqlite ou core data. Si toi sont des données simples (comme indiqué dans votre question), vous pouvez utiliser NSUserDefaults comme ci-dessous exampe,

NSArray *myArr = nil; // here myArr = yourData from your response. i take it nil for demonstrate 

NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults]; 

[myDefaults setObject:myArr forKey:@"myStoredObject"]; // by this you can store object 


NSArray *arr = [myDefaults objectForKey:@"myStoredObject"]; // like this you can retrivie object 

vous pouvez utiliser arr pour montrer l'annotation sur la carte. chaque fois que vous obtenez une réponse du serveur appelez [myDefaults setObject:myArr forKey:@"myStoredObject"]; et myArr devrait être une nouvelle réponse. il va donc remplacer vos anciennes données par de nouvelles. J'espère que cela aidera. :)

+0

Vous ne savez pas besoin d'utiliser 'AFNetworking'. – CaptJak

+0

Je reçois des données json de l'URL en écrivant le code ci-dessus ... J'écris le code pour l'adresse ci-dessus trois en utilisant MKPointAnnotation ..comme ci-dessous – nandini

+0

Oui, il n'y a pas besoin mais si quelqu'un n'est pas très familier avec ces concepts alors 'afnetworking' peut rendre leur tâche un peu facile. :) – Lion

0

Vous êtes déjà trouvé tableau, utilisez NSArray insted de id alors vous obtiendrez le Reponse dans le tableau

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error:& error]; 

Suggesion

NSURLConnection est dépréciée dans ios 9 donc utiliser NSURLSession

cela peut vous aider

https://www.objc.io/issues/5-ios7/from-nsurlconnection-to-nsurlsession/ https://www.raywenderlich.com/110458/nsurlsession-tutorial-getting-started

+1

L'OP le fait déjà. – trojanfoe

+0

Cependant, au lieu de NSArray –

+0

@trojanfoe: oui, elle a juste besoin de la réponse dans un tableau :) – AnshaD