我希望注释能够干净地落入所绘制形状的中心。未知的注释偏移原因

时间:2013-06-12 21:56:57

标签: iphone ios opengl-es cocos2d-iphone mkmapview

所有

我最近在本教程中使用cocos2d绘制了平滑线。 http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/

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

目前,当用户单击再次重新召唤搜索栏并取消绘图模式时,我会在此“中心”显示注释。然而,所收集的点的中心总是有一个不合需要的偏移 - 它似乎是零星的,有时引脚落在绘制形状的中心附近,有时它们出现在iPhone屏幕的另一侧。 / em>的

我收集了所绘制形状的topLeftbottomLefttopRightbottomRight点 - 然后我得到了那个矩形的中心点。我也考虑到了rect的起源。

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

然而,有一个看似随机的偏移。我整天都在考虑这个问题,似乎无法找到解决方案。

我希望注释能够干净地落入所绘制形状的中心。任何建议或意见,将不胜感激。该项目和entire source code can be found here

- (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;
}

我想 this not this

0 个答案:

没有答案