2017-03-16 8 views
0

このメソッドは、ユーザーがタップするたびに実行されます。多視点配列のiOS Googleマップアプリに緯度と経度の値を格納する方法は?

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate 
[rightArray addObject:[NSNumber numberWithFloat:coordinate.latitude]]; 
[rightArray addObject:[NSNumber numberWithFloat:coordinate.longitude]]; 

私rightArrayは今ために、すべての緯度と経度の値が含まれていますが、どのように私は2の値によって分割多次元配列、それらを格納することができ?したがって(10,20; 30,20; 10,90)。

答えて

1

次に、rightArrayに配列を追加する必要があります。

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate { 
    NSArray *array = @[[NSNumber numberWithFloat:coordinate.latitude], [NSNumber numberWithFloat:coordinate.longitude]]; 
    [rightArray addObject:array]; 
} 

ネストされた配列の代わりに、NSDictionaryの配列を作成することもできます。

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate { 
    NSDictionary *dictionary = @{"lat":[NSNumber numberWithFloat:coordinate.latitude], 
          "long":[NSNumber numberWithFloat:coordinate.longitude]}; 
    [rightArray addObject:dictionary]; 
} 
+0

素晴らしい解決策!ありがとうございました – konyv12

+0

@ konyv12ようこそメイト、一度編集した答えもチェックしてください。 –

0

標準的な多次元NSArrayをC言語のようにすることはできませんが、これを行う方法はほとんどありません。あなたが私に尋ねるならば、すべての「客観的なCの道」はむしろやわらかく、控えめです。そのようなNSDataの中

  1. ストアCLLocationCoordinate2D:たとえばたNSArrayやNSDictionaryのいずれかとしCLLocationCoordinate2Dから

    [NSData dataWithBytes:&coordinate length:sizeof(coordinate)]]; 
    
  2. ストアNSNumbers。 .mm、代わりのstd::vector<CLLocationCoordinate2D>を使用するファイルの名前を変更し、このようにObjective-Cの

  3. 物事を行うための事実上の標準的な方法を -

  4. パブリックプロパティとしてCLLocationCoordinate2Dを保存する別のクラスを作成し、NSArrayの中でそれを保存しますNSArray - 私の好みのソリューション

  5. ちょうどCLLocationCoordinate2D配列を作るCのまっすぐな方法を使用してください。しかし、メモリの割り当て、削除時の再割り当てを自分で管理する必要があります。

関連する問題