gpt4 book ai didi

ios - 在 MKMapView 中渲染 map 线我的 map 被卡住

转载 作者:行者123 更新时间:2023-11-29 04:09:43 27 4
gpt4 key购买 nike

大家好,我希望你能帮助我:

- (IBAction) addPoints: (id) sender
{
NSArray *latitudePoints;
NSArray *longitudePoints;
BOOL flag = NO;
@try
{
switch (lugar)
{
case 0:
break;

case 1:
latitudePoints = @[@27.781361, @27.777894, @27.766683, @27.757066, @27.745613, @27.737327, @27.728247, @27.720827, @27.720866, @27.719083, @27.722266, @27.721097, @27.739263, @27.758177, @27.780688];
longitudePoints = @[@-15.714188, @-15.720175, @-15.726072, @-15.740874, @-15.746066, @-15.759544, @-15.763944, @-15.774408, @-15.764822, @-15.752658, @-15.735975, @-15.715497, @-15.718150, @-15.712244, @-15.713213];
flag = YES;
break;

case 2:
latitudePoints = @[@28.249792, @28.254583, @28.259865, @28.264000, @28.265621, @28.267694, @28.270308, @28.272192, @28.273966, @28.275698, @28.277723, @28.279901];
longitudePoints = @[@-16.841880, @-16.842477, @-16.842657, @-16.844832, @-16.848396, @-16.851215, @-16.852329, @-16.856142, @-16.859281, @-16.860882, @-16.862011, @-16.863116];
flag = YES;
break;

default:
[NSException raise:@"Unknown place" format:@"Unknown place"];
break;
}
// NSLog(@"Lugar %d Flag %d",lugar,flag);
if (flag && [longitudePoints count] == [latitudePoints count])
{
anotacionesMapa *point; // anotacionesMapa is a custom MKAnnotation class, just have title, subtitle and coord atribute
CLLocationCoordinate2D placePoint;
NSMutableArray *pointList = [[NSMutableArray alloc] initWithCapacity:[longitudePoints count]];
for (int c = 0; c < [longitudePoints count]; c++)
{
placePoint.latitude = [[latitudePoints objectAtIndex:c] doubleValue];
placePoint.longitude = [[longitudePoints objectAtIndex:c] doubleValue];
if (c % 2 == 0)
point = [[anotacionesMapa alloc] initWithTitle:[NSString stringWithFormat:@"[Picture here] Nothing"]
subtitle:@""
andCoordinate: placePoint];
else
point = [[anotacionesMapa alloc] initWithTitle:[NSString stringWithFormat:@"Something"]
subtitle:@"[Pic here] test"
andCoordinate: placePoint];
[self.mapView addAnnotation:point];
CLLocation *linePoint = [[CLLocation alloc] initWithLatitude:placePoint.latitude longitude:placePoint.longitude];
[pointList addObject: linePoint];
}
ruta = [[CSMapRouteLayerView alloc] initWithRoute:pointList
mapView:self.mapView];
}
}
@catch (NSException *exception)
{
UIAlertView *alert;
alert = [[UIAlertView alloc] initWithTitle:@"Error..."
message:[NSString stringWithFormat:@"%@", exception]
delegate:self
cancelButtonTitle:@"Aceptar"
otherButtonTitles:nil];
[alert show];
}
}

我有这段代码,然后我需要打印 PuntosLT 和 PuntosLG 存储纬度和经度的坐标之间的行,但是当它需要打印这些行时(实际上以蓝色打印这些行,我想打印红色)MKMapView 被卡住,无法四处移动,也无法缩放,我认为它会出现错误并绘制不在坐标中的其他线条,最后我的注释中的自定义图像再次变成红色引脚,像默认和像标题、副标题这样的信息不起作用。

谢谢。

编辑:方法/构造函数

-(id) initWithRoute:(NSArray*)routePoints mapView:(MKMapView*)mapView
{
self = [super initWithFrame:CGRectMake(0, 0, mapView.frame.size.width, mapView.frame.size.height)];
[self setBackgroundColor:[UIColor clearColor]];

[self setMapView:mapView];
[self setPoints:routePoints];

// determine the extents of the trip points that were passed in, and zoom in to that area.
CLLocationDegrees maxLat = -90;
CLLocationDegrees maxLon = -180;
CLLocationDegrees minLat = 90;
CLLocationDegrees minLon = 180;

for(int idx = 0; idx < self.points.count; idx++)
{
CLLocation* currentLocation = [self.points objectAtIndex:idx];
if(currentLocation.coordinate.latitude > maxLat)
maxLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.latitude < minLat)
minLat = currentLocation.coordinate.latitude;
if(currentLocation.coordinate.longitude > maxLon)
maxLon = currentLocation.coordinate.longitude;
if(currentLocation.coordinate.longitude < minLon)
minLon = currentLocation.coordinate.longitude;
}

MKCoordinateRegion region;
region.center.latitude = (maxLat + minLat) / 2;
region.center.longitude = (maxLon + minLon) / 2;
region.span.latitudeDelta = maxLat - minLat;
region.span.longitudeDelta = maxLon - minLon;

[self.mapView setRegion:region];
[self.mapView setDelegate:self];
[self.mapView addSubview:self];

return self;
}

最佳答案

我修复了使用苹果mapkit中的一些新变量,我删除了CSMapRouteLayerView lib。我补充道:

MKPolyline *routeLine;
MKPolylineView *routeLineView;

在我的问题方法中添加以下代码:

- (IBAction) addPuntos: (id) sender
{
NSArray *puntosLt;
NSArray *puntosLg;
BOOL flag = NO;
@try
{
switch (lugar)
{
case 0:
break;

case 1:
puntosLt = @[@27.781361, @27.777894, @27.766683, @27.757066, @27.745613, @27.737327, @27.728247, @27.720827, @27.720866, @27.719083, @27.722266, @27.721097, @27.739263, @27.758177, @27.780688];
puntosLg = @[@-15.714188, @-15.720175, @-15.726072, @-15.740874, @-15.746066, @-15.759544, @-15.763944, @-15.774408, @-15.764822, @-15.752658, @-15.735975, @-15.715497, @-15.718150, @-15.712244, @-15.713213];
flag = YES;
break;

case 2:
puntosLt = @[@28.249792, @28.254583, @28.259865, @28.264000, @28.265621, @28.267694, @28.270308, @28.272192, @28.273966, @28.275698, @28.277723, @28.279901];
puntosLg = @[@-16.841880, @-16.842477, @-16.842657, @-16.844832, @-16.848396, @-16.851215, @-16.852329, @-16.856142, @-16.859281, @-16.860882, @-16.862011, @-16.863116];
flag = YES;
break;

default:
[NSException raise:@"Lugar desconocido" format:@"Lugar desconocido"];
break;
}
// NSLog(@"Lugar %d Flag %d",lugar,flag);
if (flag && [puntosLg count] == [puntosLt count])
{
anotacionesMapa *punto;
CLLocationCoordinate2D lugarPunto;
CLLocationCoordinate2D puntitos[[puntosLg count]];
for (int c = 0; c < [puntosLg count]; c++)
{
lugarPunto.latitude = [[puntosLt objectAtIndex:c] doubleValue];
lugarPunto.longitude = [[puntosLg objectAtIndex:c] doubleValue];
punto = [[anotacionesMapa alloc] initWithTitle:[NSString stringWithFormat:@"[Foto barco] Sin avistamientos"]
subtitle:@""
andCoordinate: lugarPunto];
[self.mapView addAnnotation:punto];
puntitos[c] = CLLocationCoordinate2DMake(lugarPunto.latitude, lugarPunto.longitude);
}
self.routeLine = [MKPolyline polylineWithCoordinates:puntitos count:[puntosLg count]];
[self.mapView setVisibleMapRect: [self.routeLine boundingMapRect]];
[self.mapView addOverlay: self.routeLine];
}
}
@catch (NSException *exception)
{
UIAlertView *alert;
alert = [[UIAlertView alloc] initWithTitle:@"Error..."
message:[NSString stringWithFormat:@"%@", exception]
delegate:self
cancelButtonTitle:@"Aceptar"
otherButtonTitles:nil];
[alert show];
}
}

PD:我不会使用@try/@catch,这是我使用MKMapView的示例应用程序,所以我将它们保留在这个迷你项目中,其余的我将遵循http://developer.apple.com/library/ios/#Documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorHandling/ErrorHandling.html

谢谢。

关于ios - 在 MKMapView 中渲染 map 线我的 map 被卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com