Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //find rect that encloses all coords
- float maxLat = -200;
- float maxLong = -200;
- float minLat = MAXFLOAT;
- float minLong = MAXFLOAT;
- for (int i=0 ; i<[locations count] ; i++) {
- CLLocationCoordinate2D location = [locations objectAtIndex:i];
- if (location.latitude < minLat) {
- minLat = location.latitude;
- }
- if (location.longitude < minLong) {
- minLong = location.longitude;
- }
- if (location.latitude > maxLat) {
- maxLat = location.latitude;
- }
- if (location.longitude > maxLong) {
- maxLong = location.longitude;
- }
- }
- //Center point
- CLLocationCoordinate2D center = CLLocationCoordinate2DMake((maxLat + minLat) * 0.5, (maxLong + minLong) * 0.5);
- . = point
- X = centre
- ..... X .
- CLLocationDegrees minLat,minLng,maxLat,maxLng;
- for(CLLocationCoordinate2D coordinate in coordinates) {
- minLat = MIN(minLat, coordinate.latitude);
- minLng = MIN(minLng, coordinate.longitude);
- maxLat = MAX(maxLat, coordinate.latitude);
- maxLng = MAX(maxLng, coordinate.longitude);
- }
- CLLocationCoordinate2D coordinateOrigin = CLLocationCoordinate2DMake(minLat, minLng);
- CLLocationCoordinate2D coordinateMax = CLLocationCoordinate2DMake(maxLat, maxLng);
- MKMapPoint upperLeft = MKMapPointForCoordinate(coordinateOrigin);
- MKMapPoint lowerRight = MKMapPointForCoordinate(coordinateMax);
- //Create the map rect
- MKMapRect mapRect = MKMapRectMake(upperLeft.x,
- upperLeft.y,
- lowerRight.x - upperLeft.x,
- lowerRight.y - upperLeft.y);
- //Create the region
- MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapRect);
- //THIS HAS THE CENTER, it should include spread
- CLLocationCoordinate2D centerCoordinate = region.center;
- //find rect that encloses all coords
- float maxLat = -200;
- float maxLong = -200;
- float minLat = MAXFLOAT;
- float minLong = MAXFLOAT;
- for (int i=0 ; i<[locations count] ; i++) {
- CLLocationCoordinate2D location = [locations objectAtIndex:i];
- if (location.latitude < minLat) {
- minLat = location.latitude;
- }
- if (location.longitude < minLong) {
- minLong = location.longitude;
- }
- if (location.latitude > maxLat) {
- maxLat = location.latitude;
- }
- if (location.longitude > maxLong) { //Change to be greater than
- maxLong = location.longitude;
- }
- }
- //Center point
- //The min's and max's should be ADDED not subtracted
- CLLocationCoordinate2D center = CLLocationCoordinate2DMake((maxLat + minLat) * 0.5, (maxLong + minLong) * 0.5);
- extension MKCoordinateRegion {
- init(coordinates: [CLLocationCoordinate2D]) {
- var minLatitude: CLLocationDegrees = 90.0
- var maxLatitude: CLLocationDegrees = -90.0
- var minLongitude: CLLocationDegrees = 180.0
- var maxLongitude: CLLocationDegrees = -180.0
- for coordinate in coordinates {
- let lat = Double(coordinate.latitude)
- let long = Double(coordinate.longitude)
- if lat < minLatitude {
- minLatitude = lat
- }
- if long < minLongitude {
- minLongitude = long
- }
- if lat > maxLatitude {
- maxLatitude = lat
- }
- if long > maxLongitude {
- maxLongitude = long
- }
- }
- let span = MKCoordinateSpanMake(maxLatitude - minLatitude, maxLongitude - minLongitude)
- let center = CLLocationCoordinate2DMake((maxLatitude - span.latitudeDelta / 2), (maxLongitude - span.longitudeDelta / 2))
- self.init(center: center, span: span)
- }
- }
- let region = MKCoordinateRegion(coordinates: coordinates)
- region.center
- region.span
- MKCoordinateRegion mapRegion;
- mapRegion.center = locationCoordinates;
- mapRegion.span.latitudeDelta = 0.2;
- mapRegion.span.longitudeDelta =0.2;
- mapRegion = [self.mymap regionThatFits:mapRegion];
- [mymap setRegion:mapRegion animated: YES];
Add Comment
Please, Sign In to add comment