全部,
我最近关注了这个关于使用 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;
}