gpt4 book ai didi

ios - 如何从 Dynamic NSMutableArray 添加坐标到 CLLocationCoordinate2D?

转载 作者:行者123 更新时间:2023-11-29 12:19:48 32 4
gpt4 key购买 nike

我有一个 MapView,我想在其中添加注释和一条来 self 从文本字段添加并存储在 NSMutableArray 中的已定义坐标的路线。

现在我能够显示来自多个坐标的路线,但只有当我将它们插入我的代码时,如下所示:

-(void)loadMap{

int Coordinates;
//MAP
CLLocationCoordinate2D coordinateArray[Coordinates];
coordinateArray[0] = CLLocationCoordinate2DMake(LatA, LongA);
coordinateArray[1] = CLLocationCoordinate2DMake(LatB, LongB);
coordinateArray[2] = CLLocationCoordinate2DMake(LatC, LongC);
coordinateArray[3] = CLLocationCoordinate2DMake(LatD, LongD);


self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:Coordinates];
[MapViewHome setVisibleMapRect:[self.routeLine boundingMapRect]]; //If you want the route to be visible
[MapViewHome addOverlay:self.routeLine];
MapViewHome.mapType = MKMapTypeHybrid;

[self zoomToFitMapAnnotations:MapViewHome];
}

要添加注释,我这样做:

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if(overlay == self.routeLine)
{
if(nil == self.routeLineView)
{
self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine];
self.routeLineView.fillColor = [UIColor purpleColor];
self.routeLineView.strokeColor = [UIColor purpleColor];
self.routeLineView.lineWidth = 5;

}

return self.routeLineView;
}

return nil;
}

-(void)AddAnotations{


DeparturePoint = [[MKPointAnnotation alloc] init];
DeparturePoint.coordinate = CLLocationCoordinate2DMake(LatA, LongA);
DeparturePoint.title = [NSString stringWithFormat:@"A"];
[MapViewHome addAnnotation:DeparturePoint];

ArrivalPoint = [[MKPointAnnotation alloc] init];
ArrivalPoint.coordinate = CLLocationCoordinate2DMake(LatB, LongB);
ArrivalPoint.title = [NSString stringWithFormat:@"B"];

[MapViewHome addAnnotation:ArrivalPoint];

C = [[MKPointAnnotation alloc] init];
C.coordinate = CLLocationCoordinate2DMake(LatC, LongC);
C.title = [NSString stringWithFormat:@"C"];

[MapViewHome addAnnotation:C];

D = [[MKPointAnnotation alloc] init];
D.coordinate = CLLocationCoordinate2DMake(LatD, LongD);
D.title = [NSString stringWithFormat:@"D"];

[MapViewHome addAnnotation:D];



}

现在我想在 LoadMap 函数中插入我的动态 NSMutableArray 以刷新 mapView 并获得更长的路线!有什么想法吗?

最佳答案

这是我能想到的第一个解决方案...

首先我们将 CLLocationCoordinate2D 包装到一个对象中。为此,我制作了一个名为 KBLocationWrapper 的包装器类。这是界面:

@interface KBLocationWrapper : NSObject
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@end

接下来生成 NSMutableArray ...

NSMutableArray *locationCoordinatesArray = [NSMutableArray array];

然后通过对象包装器将每个坐标添加到数组中...

KBLocationWrapper *locationWrapper = [[KBLocationWrapper alloc] init];
locationWrapper.coordinate = CLLocationCoordinate2DMake(latitude, longitude);
[locationCoordinatesArray addObject:locationWrapper];

最后,弄清楚如何将locationCoordinatesArray 获取到-loadMap 方法中,然后循环遍历每个对象并映射坐标 属性到其在 coordinateArray 中的相应位置...(我会为此功能编写一个单独的方法,但出于演示目的,它直接进入 -loadMap)

-(void)loadMap{

....

int Coordinates = (int)[locationCoordinatesArray count];

CLLocationCoordinate2D coordinateArray[Coordinates];

// loop through coordinates
for (int i = 0; i < Coordinates; ++i) {
// write data from the CLLocationCoordinate2D stored in the wrapper
// to the primitive data array 'coordinateArray'
coordinateArray[i] = [locationCoordinatesArray[i] coordinate];
}


// then generate the routeLine.
self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:Coordinates];

...

}

关于ios - 如何从 Dynamic NSMutableArray 添加坐标到 CLLocationCoordinate2D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970245/

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