问题描述
所以我想知道如何使用MapBox检索解析坐标并绘制形状.
So i am wondering how to go about retrieving Parse coordinates and drawing a shape using MapBox.
我可以检索坐标并分别绘制坐标(使用 PARSE )可以的地图:
I can retrieve the coordinates and plot them individually (using PARSE) on a map fine:
PFQuery *locationQuery = [PFQuery queryWithClassName:@"Location"];
[locationQuery whereKeyExists:@"location"];
locationQuery.cachePolicy = kPFCachePolicyNetworkElseCache;
[locationQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"Successfully retrieved %lu scores.", (unsigned long)objects.count);
NSLog(@"Object is %@ and %@", [objects objectAtIndex:0],[objects objectAtIndex:1]);
for (PFObject *gp in objects) {
//How to get PFGeoPoint and then a location out of an object
PFGeoPoint *location = [gp objectForKey:@"location"];
NSLog(@"Hi there my name is: %f", location.latitude);
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(location.latitude, location.longitude);
//This is how to populate the data with a title
NSString *title = [NSString stringWithFormat:@"%@", gp.createdAt];
RMPointAnnotation *annotation3 = [[RMPointAnnotation alloc] initWithMapView:mapView coordinate:coordinate andTitle:title];
[mapView addAnnotation:annotation3];
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
为地图添加形状(使用 MapBox )也是可行的:
Adding a shape to a map (using MapBox) is doable as well:
//Line for streets location arrays, etc MapBox
NSArray *locations = [NSArray arrayWithObjects:[[CLLocation alloc] initWithLatitude:-33.980852 longitude:151.072498],
[[CLLocation alloc] initWithLatitude:-33.981769 longitude:151.072300],
[[CLLocation alloc] initWithLatitude:-33.982018 longitude:151.072257],
[[CLLocation alloc] initWithLatitude:-33.982187 longitude:151.072225], nil, nil];
RMAnnotation *annoation43 = [[RMAnnotation alloc] initWithMapView:mapView coordinate:((CLLocation *)[locations
objectAtIndex:0]).coordinate andTitle:@"Hola biatches!"];
objectAtIndex:0]).coordinate andTitle:@"Hola biatches!"];
annoation43.userInfo = locations;
[annoation43 setBoundingBoxFromLocations:locations];
[mapView addAnnotation:annoation43];
NSLog(@"It is working Dora!");
-(RMMapLayer *)mapView:(RMMapView *)mapViewer layerForAnnotation:(RMAnnotation *)annotation {
if (annotation.isUserLocationAnnotation)
return nil;
RMShape *shape = [[RMShape alloc] initWithView:mapView];
//Line dashes and colours and widths, etc
shape.lineColor = [UIColor orangeColor];
shape.lineWidth = 4.0;
shape.scaleLineWidth = YES;
shape.scaleLineDash = YES;
shape.lineDashLengths = [NSArray arrayWithObjects:[NSNumber numberWithInt:4], [NSNumber numberWithInt:6], nil];
shape.lineDashPhase = 3.0f;
for (CLLocation *location in (NSArray *)annotation.userInfo)
[shape addLineToCoordinate:location.coordinate];
return shape;
}
我想知道如何让MapBox从这些坐标绘制形状?我做了几次尝试,却一无所获,所以比我有更好头脑的人将不胜感激.如果您需要更多信息,请告诉我.
I am wondering how i would get MapBox to draw a shape from these coordinates? I have had a few attempts and am getting nowhere so someone with a better mind than i would be greatly appreciated. If you need any more information let me know.
推荐答案
我知道了-我尝试的解决方案很好-我在循环内初始化数组,因此每次都在重新创建数组,所以覆盖每个新坐标,并尝试仅使用一个坐标绘制形状.
I figured it out - my solution i was attempting was fine - i was initialising the array WITHIN the loop and so it was recreating the array each time and so was overwriting each new coordinate and trying to draw a shape using only one coordinate.
PFQuery *locationQuery2 = [PFQuery queryWithClassName:@"Location"];
[locationQuery2 whereKeyExists:@"location"];
locationQuery2.limit = 4;
locationQuery2.cachePolicy = kPFCachePolicyNetworkElseCache;
[locationQuery2 findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"Successfully retrieved %lu scores.", (unsigned long)objects.count);
NSLog(@"Object is %@ and %@", [objects objectAtIndex:0],[objects objectAtIndex:1]);
NSMutableArray *locations = [[[NSMutableArray alloc] init] mutableCopy];
for (PFObject *gp in objects) {
//How to get PFGeoPoint and then a location out of an object
PFGeoPoint *location = [gp objectForKey:@"location"];
NSLog(@"Hi there my name is not: %f", location.latitude);
CLLocation *coordinate = [[CLLocation alloc] initWithLatitude:location.latitude longitude:location.longitude];
//Line for streets location arrays, etc MapBox
[locations addObject:coordinate];
RMAnnotation *annoation43 = [[RMAnnotation alloc] initWithMapView:mapView coordinate:((CLLocation *)[locations objectAtIndex:0]).coordinate andTitle:@"Hola biatches!"];
annoation43.userInfo = locations;
[annoation43 setBoundingBoxFromLocations:locations];
[mapView addAnnotation:annoation43];
NSLog(@"It is working Dora!");
NSLog(@"Yeah its is: %@", locations);
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
这篇关于iOS解析GeoPoints& MapBox形状的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!