2011-07-28 34 views
8

Tôi đang cố gắng nắm bắt một tọa độ từ sự kiện cảm ứng. Tôi có thể bắt nhưng khi cung cấp chức năng thu phóng có số lượng lớn và khi tôi đặt chức năng này vào một hàmĐiểm chạm với bản đồ thu phóngXem

newCoord = [mapView convertPoint:location toCoordinateFromView:mapView], 

Tôi nhận được tọa độ sai. Tôi có thể làm gì?

Mã của tôi:

UITouch *touch = [touches anyObject]; 

CGPoint location = [touch locationInView:touch.view]; 


NSLog(@"locationTOUCH:%f,%f", location.x,location.y); 

CLLocationCoordinate2D newCoord; 

newCoord = [mapView convertPoint:location toCoordinateFromView:mapView]; 

NSLog(@"coordinate-%f,%f", newCoord.latitude,newCoord.longitude); 
+1

là touch.view giống như MapView? Nó có thể tốt hơn để sử dụng một UIGestureRecognizer để phát hiện các chạm trên bản đồ. Xem [câu trả lời này] (http://stackoverflow.com/questions/4317810/how-to-capture-tap-gesture-on-mkmapview/4318835#4318835). Câu trả lời đó không đề cập đến bạn cũng nên trả về YES trong shouldRecognizeSimultaneouslyWithGestureRecognizer để tránh can thiệp vào công cụ nhận dạng cử chỉ của bản đồ. – Anna

Trả lời

1

tôi đoán nó cần được cố định bằng cách thay đổi

CGPoint location = [touch locationInView:touch.view]; 

để

CGPoint location = [touch locationInView:mapView]; 
+0

Ortwin là đúng: hệ thống tọa độ của các quan điểm có lẽ không giống nhau, đó là lý do tại sao bạn nhận được tọa độ sai bằng cách sử dụng một cho phát hiện cảm ứng và khác cho các tọa độ chuyển đổi. – psycho

Các vấn đề liên quan