我在ios地图上工作。在这里,当我使用覆盖层在 ios 地图上绘制一条线时,它显示了多条线。现在我只想画一条直线。我怎样才能做到这一点。下面我附上了带有屏幕截图的代码。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([touches count]>1)
{
[super touchesBegan:touches withEvent:event];
return;
}
UITouch *touch = [touches anyObject];
tappedPoint1 = [touch locationInView:_mapView];
// _startCoord = [_mapView convertPoint:tappedPoint1 toCoordinateFromView:_mapView];
coord1= [_mapView convertPoint:tappedPoint1 toCoordinateFromView:_mapView];
polyline = nil;
}
- (void)updatePolylineWithCoordinate:(CLLocationCoordinate2D)coord6
{
if (!_polyline)
{
MKMapPoint points[2];
points[0] = MKMapPointForCoordinate(coord1);
points[1] = MKMapPointForCoordinate(coord6);
line2 = [MKPolyline polylineWithPoints:points count:2];
}
else
{
NSUInteger count = _polyline.pointCount + 1;
// create new point array and add new coord
CLLocationCoordinate2D coords[count];
[_polyline getCoordinates:coords range:NSMakeRange(0, count-1)];
coords[count - 1] = coord6;
[_mapView removeOverlay:_polyline];
line2 = [MKPolyline polylineWithCoordinates:coords count:count];
}
line2.title = @"line";
[_mapView addOverlay: line2];
// _polyline = line2;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:_mapView];
CLLocationCoordinate2D coord5= [_mapView convertPoint:currentPoint toCoordinateFromView:_mapView];
NSLog(@"_startCoord.latitude : %f", coord5.latitude);
NSLog(@"_startCoord.lontitude : %f", coord5.longitude);
[self updatePolylineWithCoordinate:coord5];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolyline class]])
{
lineview=[[[MKPolylineView alloc] initWithOverlay:overlay] autorelease];
lineview.strokeColor=[[UIColor blueColor] colorWithAlphaComponent:0.5];
lineview.fillColor = [[UIColor redColor]colorWithAlphaComponent:0.5];
lineview.lineWidth=2.0;
return [lineview autorelease];
}
return nil;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[_mapView removeOverlay:line2];
MKMapPoint points[2];
points[0] = MKMapPointForCoordinate(coord1);
points[1] = MKMapPointForCoordinate(coord5);
line2 = [MKPolyline polylineWithPoints:points count:2];
[_mapView addOverlay: line2];
}
现在,当我使用触摸移动绘制一条线时,它会在地图上的任何地方绘制取决于 ios 地图。但我需要当用户移动他的手指时,只会显示一条直线。我该怎么做:请看这个屏幕截图。
任何人都可以帮我解决这个问题。