2011-08-15 7 views
3

私は簡単な質問があります。私はマップビューのコールアウトアクセサリとしてカスタムビューを使用しています。注釈をビューの右下に移動することにいくつか問題があります。私は現在、選択した注釈のCGPoint座標を取得しようとしていますが、それを超えて空白を描いています。どんな助けでも大歓迎です。MKMapViewポイントをピクセル座標に移動

は、私が使用している現在のコードは、(私はそれが間違っている知っている:)です

CGPoint bottomLeftPoint = CGPointMake(xOffset,[self.internalAnnotationCallout view].frame.size.height); 
CLLocationCoordinate2D bottomLeftCoord = [self.branchLocation convertPoint:bottomLeftPoint toCoordinateFromView:self.branchLocation]; 
MKCoordinateSpan span = {latitudeDelta: kMapMultiLatDelta, longitudeDelta: kMapMultiLatDelta}; 
    MKCoordinateRegion region = {bottomLeftCoord, span}; 
[self.branchLocation setRegion:region animated:YES]; 
//[self.branchLocation setCenterCoordinate:newCenterCoordinate animated:YES]; 
+0

編集:コールアウトビューには静的な座標があります。マップのどこにビューの右下に行くかにかかわらず、選択した注釈が欲しいだけです。 –

答えて

7

編集:私はこの小さなと周りの混乱と一緒に何かを置くことができました[OK]を

私は今あなたが達成しようとしていることを実際に理解することを望んで、うまくいくようです。

- (void)shiftToCorner{ 
    //ignore "Annotation", this is just my own custom MKAnnotation subclass 
    Annotation *currentAnnotation = [[mapView selectedAnnotations] objectAtIndex:0]; 
    [mapView setCenterCoordinate:currentAnnotation.coordinate]; 

    CGPoint fakecenter = CGPointMake(20, 20); 
    CLLocationCoordinate2D coordinate = [mapView convertPoint:fakecenter toCoordinateFromView:mapView]; 
    [mapView setCenterCoordinate:coordinate animated:YES]; 
} 

これが何をしているのかを簡単に説明しましょう。アノテーションを右端から20ポイント、マップビューの下端から20ポイントの位置に移動するとします。これについて考えると、現在の注釈がマップビューの中央にある場合、この点までの距離は(20、20)までの距離と同じです。これは、最初に注釈を地図ビューの中心に置き、次に(20、20)にアニメーション化することで、注釈をこのポイントに送ることができることを意味します。

+0

ackはコメントで読みにくいですが、質問に追加できますか? – mjisrawi

+0

選択した注釈の古い座標を新しいプリセット座標にどのように変換すればよいですか? –

+0

注釈を新しい地図座標に移動しようとしていますか? – mjisrawi

関連する問題