2012-05-31 29 views
0

我需要將我的註記座標從我的地圖座標系轉換爲我的地圖視圖座標系。爲此,我使用convertPoint:FromView:方法。convertPoint:FromView:並不總是返回正確的值

它的工作,但有時它會返回一個錯誤的值。

這是我的代碼

- (CGFloat)relativeParentXPosition { 
    NSLog(@"Point Origin: %@", NSStringFromCGPoint(self.parentAnnotationView.frame.origin)); 

    CGPoint parentOrigin = [self.mapView convertPoint:self.parentAnnotationView.frame.origin 
             fromView:self.parentAnnotationView.superview]; 

    NSLog(@"NEW PARENT Origin: %@", NSStringFromCGPoint(parentOrigin)); 

    return parentOrigin.x + self.offsetFromParent.x; 
} 

這是輸出:

  • 工作

原點:{9.92118e + 06,+ 1.2004e 07}

NEW PARENT原產地:{39,218}

  • 不工作 - 返回錯誤的值

原點:{9.92138e + 06,+ 1.20039e 07}

新的父來源:{9.92138e + 06,+ 1.20037e 07}

有沒有人有這個問題?我不明白爲什麼會發生?這是來自蘋果的錯誤嗎? 謝謝

+1

什麼是self.mapView和self.parentAnnotationView.superview之間的關係呢? –

+0

當你問你的問題,我問自己爲什麼我使用超視圖。而我雖然我使用它,因爲我使用了錯誤的方法。所以我改變我的代碼[self.mapView convertCoordinate:self.parentAnnotationView.annotation.coordinate toPointToView:self.mapView],它的工作原理!所以謝謝你讓我走上正軌 –

回答

0

我的不好,我使用了錯誤的方法。 要獲得視圖座標中註釋的座標,我們需要使用convertCoordinate:toPointToView:方法。

CGPoint parentOrigin = [self.mapView convertCoordinate:self.parentAnnotationView.annotation.coordinate toPointToView:self.mapView]; 

感謝@Jeffery托馬斯把我在正確的軌道

相關問題