3

緯度と経度の一意の場所で重複する注釈を制限するにはどうすればよいですか。

地図に注釈を追加するとき、同じ緯度と経度を持つ 1 つのポイントに注釈を追加できます。たとえば、緯度 = 37.785834 と経度 = -122.406417 で地図にピンを追加し、次にボブの家として名前を付けます。その場所に再び注釈ピンを追加すると、緯度と経度は同じになり、Steve House として保存できますが、この場所が既に占有されているという種類のアラートを表示して、別の場所を選択してください。緯度経度に重複するエントリがないようにします。これは、ズームなどとは何の関係もありません。

今、ユーザーが同じ緯度と経度で注釈をタップしているかどうかをクエリしてデータベースにチェックインするコードが必要です。つまり、データベースにチェックインして、同じ緯度/経度値の重複エントリを作成したくありません.....

コード例:

#pragma mark - 
- (void) addSite2 { 
    AddSiteInfoViewController *vc = [[[AddSiteInfoViewController alloc] initWithCoordinate:pinAnnotation.coordinate] autorelease]; 
    [self.delegate pushViewController:vc animated:YES];
}
4

1 に答える 1

0

注釈がマップに既に表示されている場合は、次のコードを使用できます (データベースをチェックする必要はありません)。

#pragma mark - 
- (void) addSite2 { 
    NSUInteger index = [self.mapView.annotations indexOfObjectPassingTest:
                        ^BOOL(MKAnnotation *anot1, NSUInteger index, BOOL *stop){
                            return (CLCOORDINATES_EQUAL( anot1.coordinate, pinAnnotation.coordinate));
                    }];
    if (index == NSNotFound)
    {
        AddSiteInfoViewController *vc = [[[AddSiteInfoViewController alloc] initWithCoordinate:pinAnnotation.coordinate] autorelease]; 
        [self.delegate pushViewController:vc animated:YES];
    }
}

(主に私の頭の上で書いたので、タイプミスや軽微なエラーが存在する可能性があります.)

実際、注釈が表示されない場合は... Rajneesh071 のコメントに記載されている解決策を使用してください:データ配列から一意のオブジェクトを抽出する

于 2012-12-27T12:26:42.517 に答える