限制MKMapView显示的区域

来源:互联网 发布:java工程师和程序员 编辑:程序博客网 时间:2024/04/27 18:14

限制MKMapView显示的区域: 自定义一个显示范围 (根据 centerCoord 和 span 来确定地图的初始 Region),拖动或者缩放都不能超过限定的范围。

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{        //限制map显示区域    /*     newLocCoordinate : 初始的中心点经纬度     oriSpan :初始的Span         */    MKCoordinateRegion regin = mapView.region;      if ((regin.span.latitudeDelta > oriSpan.latitudeDelta ) || (regin.span.longitudeDelta > oriSpan.longitudeDelta) ) {                        CLLocationCoordinate2D centerCoord = newLocCoordinate;                MKCoordinateSpan span = oriSpan;                MKCoordinateRegion region = MKCoordinateRegionMake(centerCoord, span);                [mapView setRegion: region animated: YES];    }        if (regin.center.latitude+regin.span.latitudeDelta/2 > newLocCoordinate.latitude+oriSpan.latitudeDelta/2        ||regin.center.latitude-regin.span.latitudeDelta/2 < newLocCoordinate.latitude-oriSpan.latitudeDelta/2) {        CLLocationCoordinate2D centerCoord = newLocCoordinate;                MKCoordinateSpan span = oriSpan;                MKCoordinateRegion region = MKCoordinateRegionMake(centerCoord, span);                [mapView setRegion: region animated: YES];            }        if (regin.center.longitude+regin.span.longitudeDelta/2 > newLocCoordinate.longitude+oriSpan.longitudeDelta/2        ||regin.center.longitude-regin.span.longitudeDelta/2 < newLocCoordinate.longitude-oriSpan.longitudeDelta/2) {        CLLocationCoordinate2D centerCoord = newLocCoordinate;                MKCoordinateSpan  span = oriSpan;                MKCoordinateRegion region = MKCoordinateRegionMake(centerCoord, span);                [mapView setRegion: region animated: YES];    }}