1

マップ (ビュー) に注釈を追加し、緯度と経度の文字列を追加して URL に配置し、個々のマップ注釈情報を取得するとします。私の問題は、削除する注釈を選択したら、URL 要求用の文字列で選択した注釈の緯度と経度をどのように見つけるかです。

例えば

www.something.com/39.001,29.002;34.0567,-32,0091;56.987,76.435

次に、アノテーションを削除したと仮定します34.0567,-32,0091

次の文字列を更新する方法

www.something.com/39.001,29.002;56.987,76.435
4

2 に答える 2

2

これには別の方法があります。アノテーション付きのマップを使用しているため、いつでもアノテーションのリストを取得し、それらをメソッドに渡してURLを作成できます。

- (NSURL *)makeUrlFromAnnotations:(NSArray *)annotations
{
    NSString *baseUrl = @"www.something.com/";
    NSMutableArray *annotationStrings = [[NSMutableArray alloc] initWithCapacity:0];
    for (id <MKAnnotation> annotation in annotations)
    {
     [annotationStrings addObject:
      [NSString stringWithFormat:@"%f,%f",
       annotation.coordinate.latitude,
       annotation.coordinate.longitude]
     ];
    }

    return [NSURL URLWithString:[baseUrl stringByAppendingPathComponent:[annotationStrings componentsJoinedByString:@";"]]];
}

次に、座標を含むURLが必要になるたびに、次のように呼び出します。

NSURL *url = [self makeUrlFromAnnotations:self.myMapview.annotations];
//Or whatever property is your mapview
于 2012-10-24T19:55:55.033 に答える
2

URL を「編集」するためにURL を asNSMutableStringに変換し、その文字列内の目印の出現箇所を置き換えます。次に、文字列を URL に戻します。

NSURL *currentURL = [NSURL URLWithString:@"www.something.com/39.001,29.002;34.0567,-32,0091;56.987,76.435"];

NSMutableString *absolute = [NSMutableString stringWithString:[currentURL absoluteString]];
[absolute replaceOccurrencesOfString:@"34.0567,-32,0091;" withString:@"" options:0 range:NSMakeRange(0, [absolute length])];

NSURL *newURL = [NSURL URLWithString:absolute];

NSLog(@"My new URL = %@", newURL.absoluteString);

編集--->変更された目印のインデックスを含む更新されたコード。

NSString *domain = @"www.something.com/";
NSURL *currentURL = [NSURL URLWithString:@"www.something.com/39.001,29.002;34.0567,-32,0091;56.987,76.435"];

NSMutableString *absolute = [NSMutableString stringWithString:[currentURL absoluteString]];
[absolute replaceOccurrencesOfString:domain withString:@"" options:0 range:NSMakeRange(0, [absolute length])];

NSArray *placemarks = [absolute componentsSeparatedByString:@";"];

NSString *placemarkToRemove = @"34.0567,-32,0091";

NSUInteger index = [placemarks indexOfObject:placemarkToRemove];

[absolute replaceOccurrencesOfString:[placemarkToRemove stringByAppendingString:@";"] withString:@"" options:0 range:NSMakeRange(0, [absolute length])];

NSURL *newURL = [NSURL URLWithString:absolute];

NSLog(@"Placemark Index = %u; My new URL = %@", index, newURL.absoluteString);
于 2012-10-24T19:00:04.720 に答える