我正在努力研究如何让线条显示在我的地图上。我试图从接触开始到接触结束画一条线。
目前我正在获取触摸位置的坐标,将其添加到数组中,获取触摸结束位置的线,将其添加到数组中,然后画线。这是我下面的代码。
当我遗憾地运行代码时,我的行没有显示。然而,当我坐着想知道我错过了什么(因为我的坐标被保存到数组中)时,我沮丧地不停地滑动屏幕,突然出现了一条线!我关闭了程序并再次做了同样的事情,据我所知,线条是随机绘制的,并且坐标错误。
我变了
CLLocationCoordinate2D obh1=CLLocationCoordinate2DMake
(startTouch.latitude, startTouch.longitude);
至
CLLocationCoordinate2D obh1=CLLocationCoordinate2DMake
(startTouch.longitude, startTouch.latitude);
看看我是否以某种方式混合了我的坐标,但同样的事情正在发生。这些线是在随机位置绘制的。
如果有人可以为我提供一点帮助来解决这个问题,我将不胜感激。
我做了一些工作,这就是我想出的。当我单击地图时,您看到的 4 个线点会出现。它们是触动的结束,触动的开始。我不知道它们来自哪里,但不知道来自我的代码。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches began");
UITouch *touch = [touches anyObject];
// Get the specific point that was touched
CGPoint point = [touch locationInView:self.view];
//convert toc
CLLocationCoordinate2D startTouch
=[self.map convertPoint:point toCoordinateFromView:_map];
CLLocationCoordinate2D obh1=CLLocationCoordinate2DMake(startTouch.latitude, startTouch.longitude);
[arrayOfLine addObject: [NSValue valueWithMKCoordinate:obh1]];
NSLog(@"array: %@", arrayOfLine);
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touches END");
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
CLLocationCoordinate2D endTouch
=[self.map convertPoint:point toCoordinateFromView:_map];
CLLocationCoordinate2D obh=CLLocationCoordinate2DMake(endTouch.latitude, endTouch.longitude);
[arrayOfLine addObject: [NSValue valueWithMKCoordinate:obh]];
NSLog(@"array: %@", arrayOfLine);
MKPolyline *polygon = [MKPolyline polylineWithCoordinates:&obh count:[arrayOfLine count]];
[_map addOverlay:polygon];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolyline class]])
{
MKPolylineView *overlayView = [[MKPolylineView alloc] initWithPolyline:overlay];
overlayView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
overlayView.lineWidth = 3;
return overlayView;
}
return nil;
}