모든 주석을 제거한 후 모든 주석 태그를 업데이트해야한다는 요구 사항이 있습니다.지도 뷰에서 주석을 제거하고 읽지 않고 주석의 태그 값 업데이트
왜 사용하지 않는지 묻는 질문이 있습니다. removeAnnotations
& addAnnotation
? 대답은 '아니오'입니다. 핀이 정말 거대합니다 (각 폴리곤 당 ~ 3000 개). 따라서 모든 주석을 제거하면 &을 다시 읽음으로써 맵에서 실제로 깜짝 놀라게됩니다. 그래서 나는 다음과 같은 코드를 시도 :
-(void)deletePin
{
[MyMapView deselectAnnotation:currentAnnotationView.annotation animated:NO];
//currentAnnotationView is the selected annotationView
[self.arrAreaPin removeObjectAtIndex:currentAnnotationView.tag];
//arrAreaPin holds all pin's properties(tag, title, pin color, etc)
[MyMapView removeAnnotation:currentAnnotationView.annotation];
if (currentAnnotationView.tag<self.arrAreaPin.count)
{
NSUInteger index = 0;
for (id<MKAnnotation>annotation in MyMapView.annotations)
{
if (![annotation isKindOfClass:[MKUserLocation class]])
{
MyMapAnnotation *myAnn = (MyMapAnnotation *)annotation; //MyMapAnnotation is the custom MKAnnotation with some added properties like locationType(I stored the array index in it)
myAnn.locationType = index; //Updating with array index after deleting a pin
MKAnnotationView *annView = [MyMapView viewForAnnotation: annotation];
NSLog(@"Before updating Annotation tag: %lu",annView.tag);
annView.tag = index;
NSLog(@"After updating Annotation tag: %lu",(unsigned long)annView.tag);
}
index++;
}
}
}
를하지만 루프에 대한이 arrAreaPin 배열의 순서와 일치하지 않는지도보기에서 주석을 선택합니다 길처럼 보인다. 루프에 대한지도에서 무작위로 주석을 따기 같은 기본적
Before updating Annotation tag: 0
After updating Annotation tag: 0
Before updating Annotation tag: 10
After updating Annotation tag: 1
Before updating Annotation tag: 16
After updating Annotation tag: 2
Before updating Annotation tag: 5
After updating Annotation tag: 3
Before updating Annotation tag: 17
After updating Annotation tag: 4
외모 : 나는 annonation 태그를 업데이트 한 후 & 전에 annotationView의 태그 값을 인쇄하고있을 때 그래서 같이 보인다. 내가 맞습니까?
주석 태그를 순서대로 업데이트 할 수 있습니까? 미리 감사드립니다.
고마워 :
그래서 내 제안은 같은 (아래 폴란드 의견 인해 편집 된)를 사용하는 것입니다. 그것은 내가 생각했던 것 같았다. 그러나 작은 변화가 필요했습니다. 'sortedArrayUsingComparator'에서 우리는'[annViewA.tag compare : annViewB.tag] 대신'return [[NSNumber numberWithInteger : annViewA.tag] compare : [NSNumber numberWithInteger : annViewB.tag]];를 사용할 필요가 있습니다. – Poles
@ 폴란드 감사합니다. 위에서 제안한대로 코드를 편집했습니다. –