1

全部,

我最近关注了这个关于使用 cocos2d 绘制平滑线的教程。http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/

这是一个很棒的教程。我让它在MapViewController. 用户可以“单击”屏幕以隐藏搜索栏并绘制在地图上。这个想法是用户将绘制一个圆形或诸如正方形之类的形状(我们刚刚看到它会是一个圆形),并且注释将出现在所绘制形状的中心。

目前,当用户再次单击以重新召唤搜索栏并取消绘图模式时,我在这个“中心”出现了注释。然而,收集的点的中心总是有一个不受欢迎的偏移——它似乎是零星的,有时针落在绘制形状的中心附近,而其他时候它们出现在 iPhone 屏幕的另一侧。

我已经收集了绘制形状的topLeft, bottomLeft, topRight,bottomRight点 - 然后我得到了给定矩形的中心点。我也考虑了矩形的起源。

一旦我从绘制的点得到中心点CGRect,我使用 iOS 的默认方法将屏幕触摸点转换为地图上的位置。

然而,有一个看似随机的偏移量。我整天都在想这个问题,我似乎找不到解决办法。

我希望注释干净地落入绘制形状的中心。任何建议或意见,将不胜感激。可以在此处找到该项目和整个源代码。

- (void) setMarker {
    CGPoint point = [[MapSingleton mapSingleton] getMarkerPoint];
    NSLog(@"%f,%f", point.x, point.y);

    if(point.x >= 0 && point.y >= 0) {
        //Place marker annotation
        Annotation *annotation = [[Annotation alloc] init];
        annotation.coordinate = [self convertScreenToLatLong:point];
        annotation.color = RGB(255, 0, 0);
        annotation.title = @"New Annotation";

        // Add to map
        [self.mapView addAnnotation:annotation];
    }
}

-(CLLocationCoordinate2D)convertScreenToLatLong:(CGPoint)point {
    CGPoint tapPoint = point; // the tap point on the MKMapView on the device
    CLLocationCoordinate2D coordinates = [mapView convertPoint:tapPoint toCoordinateFromView:mapView]; // _customMapView in an MKMapView instance
    NSLog(@"Tap at : %f, %f", coordinates.latitude, coordinates.longitude);
    return coordinates;
}

我要这个不是这个

4

0 回答 0