How to get radius from visible area of MKmapview?

后端 未结 2 657
盖世英雄少女心
盖世英雄少女心 2021-01-01 02:22

I am able to get visible rectangle of map view and also centre point of map view and span deltas are also get from mkmaap view methods: To get visible are :mapView.vis

2条回答
  •  南方客
    南方客 (楼主)
    2021-01-01 02:41

    To get the radius follow this:

    - (CLLocationDistance)getRadius
    {
        CLLocationCoordinate2D centerCoor = [self getCenterCoordinate];
        // init center location from center coordinate
        CLLocation *centerLocation = [[CLLocation alloc] initWithLatitude:centerCoor.latitude longitude:centerCoor.longitude];
    
        CLLocationCoordinate2D topCenterCoor = [self getTopCenterCoordinate];
        CLLocation *topCenterLocation = [[CLLocation alloc] initWithLatitude:topCenterCoor.latitude longitude:topCenterCoor.longitude];
    
        CLLocationDistance radius = [centerLocation distanceFromLocation:topCenterLocation];
    
        return radius;
    }
    

    It will return the radius in metres.

    To get center coordinate

    - (CLLocationCoordinate2D)getCenterCoordinate
    {
        return [self.mapView centerCoordinate];
    }
    

    For getting radius, depends on where you want to get the 2nd point. Lets take the Top Center

    - (CLLocationCoordinate2D)getTopCenterCoordinate
    {
        // to get coordinate from CGPoint of your map
        return [self.mapView convertPoint:CGPointMake(self.mapView.frame.size.width / 2.0f, 0) toCoordinateFromView:self.mapView];
    }
    

提交回复
热议问题