2013-04-18 83 views
0

我試圖解決一個我不確定如何解決的問題。在我的應用程序中,當mapkit啓動時,我在用戶的當前位置放置一個別針。 mapkit代表viewForAnnotation,它設置了可以正常工作的引腳顏色。分辨用戶位置引腳和用戶添加的引腳

我遇到的問題是我無法區分註釋,因此我可以對「用戶添加的位置」與我的「當前位置」引腳應用不同的顏色。我想添加一個按鈕,以便他們可以刪除他們添加的任何引腳,但無法刪除他們的「當前位置」引腳。我似乎無法弄清楚如何提取任何可識別的信息,如標題或副標題的副標題。

在此先感謝您的幫助。

這裏是我的代碼...

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    NSLog(@"OAAssignmentGPSViewController.m : mapView viewForAnnotation"); 

    if([annotation isKindOfClass: [MKUserLocation class]]) 
    return nil; 

    NSLog(@" mapView.userLocation.title = %@", self.mapView.userLocation.title); 
    static NSString* annotationIdentifier = @"currentlocation"; 
    MKPinAnnotationView *myPinView = (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier]; 
    if (!myPinView) { 
    myPinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] ; 
    myPinView.pinColor = MKPinAnnotationColorRed; 
    myPinView.canShowCallout = YES; 
    myPinView.animatesDrop = YES; 

    NSLog(@"mapView.description %@", self.mapView.userLocation.title); 
    if(annotation != self.mapView.userLocation)<<<<<----how do I check for UserLocation 
    { 
     myPinView.pinColor = MKPinAnnotationColorGreen; 
     myPinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    } 
    } 
    return myPinView; 
} 

回答

1

更新這對於其他新手,這是答案...

if ([annotation isKindOfClass:[MKUserLocation class]]) ....{ 

    this is the current location pin 

}else { 

    these are you custom locations pins 
} 
0

我能想到的唯一的事情是繼承MKPinAnnotationView和一個簡單的屬性添加到索引它。在創建數組時將它們添加到數組中,並增加索引編號。然後,你的「刪除所有管腳」的方法,這樣的事情在您檢查引腳的索引屬性,以確保它不是第一個:

-(IBAction)deleteAllPins 
{ 
    for (id pin in self.pinsArray) { 
     if (pin.indexNumber >= 1) { //This is not the first pin... 
     // Delete the pin 
    } 

    } 
} 

這就是我會嘗試,反正。對不起,我沒有時間自己測試一下。希望它會讓你開始。祝你好運。