0

我有一个几个月前写的映射项目,我在其中使用了一个辅助类,它将触摸参数传递给我的主 mapview 类。使用以下方法,我通常可以将 CGPoint x 和 y 信息转换为地理坐标:

- (void)moveDetect:(NSSet *)touches :(UIEvent *)event {

UITouch *touch = [[event allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
NSLog(@"X:%f  Y:%f", touchPoint.x, touchPoint.y);

CLLocationCoordinate2D touchCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];

float lat = touchCoordinate.latitude;
float lng = touchCoordinate.longitude;
NSLog(@"Touch Coordinate: %f %f", lat, lng);}

我最近尝试在不同的项目中重用代码,但没有发生转换。停止并进入 touchCoordinate 变量最初会显示值(纬度 = {CLLocationDegrees}3.23141e-306 和经度={CLLocationDegrees}5.46786e-48),但一旦你到达下一行代码,值都是 0。我已经审查了这两个项目,但无法弄清楚为什么一个有效而另一个无效。我很感激这段时间,并期待任何可以引导我走向正确方向的建议。谢谢。

4

1 回答 1

0

用这个:

  - (void)moveDetect:(NSSet *)touches :(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchPoint = [touch locationInView:self.mapView]; //here locationInView it would be mapView
    NSLog(@"X:%f  Y:%f", touchPoint.x, touchPoint.y);

    CLLocationCoordinate2D touchCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];
 }
于 2012-06-28T20:49:57.807 回答