1
マップビューにMKPolygon(三角形)を描画しようとしていますが、表示されません。私も線を引いて、それが現れているので、なぜ三角形ではないのか分かりません。三角形のMKPolygonが描画されていません
CGPoint base = [mapView convertCoordinate:carLocation toPointToView:mapView];
CGPoint pivot = [mapView convertCoordinate:locationToLookup toPointToView:mapView];
MKPolygon *triangle = [self drawTriangle:pivot:base];
[mapView removeOverlays:[mapView overlays]];
[mapView addOverlay:line];
[mapView addOverlay:triangle];
-(MKPolygon *) drawTriangle:(CGPoint) pivot:(CGPoint)base {
if ((abs(pivot.x - base.x) >= 70) || abs(pivot.y - base.y) >= 70) {
double triangleHeight = 30;
double triangleWidth = 30;
double triangleSide = sqrt(triangleWidth*triangleWidth/4+triangleHeight*triangleHeight);
double openingAngle = asin(triangleWidth/2.0/triangleSide);
double angle = atan2(pivot.y - base.y, pivot.x - base.x);
CGPoint a;
a.x = (int) (base.x + triangleSide*cos(angle + openingAngle));
a.y = (int) (base.y + triangleSide*sin(angle + openingAngle));
CGPoint b;
b.x = (int) (base.x + triangleSide*cos(angle - openingAngle));
b.y = (int) (base.y + triangleSide*sin(angle - openingAngle));
MKMapPoint * mp = malloc(sizeof(MKMapPoint) * 3);
MKMapPoint init;
init.x = base.x;
init.y = base.y;
mp[0] = init;
init.x = a.x;
init.y = a.y;
mp[1] = init;
init.x = b.x;
init.y = b.y;
mp[2] = init;
NSLog(@"base x: %f y: %f a x: %f y: %f b x: %f y :%f", base.x, base.y, a.x, a.y, b.x, b.y);
MKPolygon* triangle = [MKPolygon polygonWithPoints:mp count:3];
NSLog(@"inside");
free(mp);
return triangle;
}
NSLog(@"here");
return nil;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay
{
MKOverlayView* overlayView = nil;
if (overlay == line) {
NSLog(@"In line");
MKPolylineView* mkov = [[MKPolylineView alloc] initWithPolyline:overlay];
// [mkov fillColor:[UIColor redColor]];
mkov.fillColor = [UIColor redColor];
mkov.strokeColor = [UIColor redColor];
mkov.lineWidth = 3;
overlayView = mkov;
return overlayView;
} else {
NSLog(@"In here");
MKPolygonView *mkpv = [[MKPolygonView alloc] initWithPolygon:overlay];
mkpv.fillColor = [UIColor blueColor];
mkpv.strokeColor = [UIColor blueColor];
mkpv.lineWidth = 3;
overlayView = mkpv;
return overlayView;
}
}
点が右であると思われる:ここに関連するコードである(一つのテストここでは、ベースX:43.000000 Y:25.500000斧:50.000000 Y:58.000000 BX:73.000000のY:38.000000)、しかしviewForOverlayは...