限制MKMapView顯示的區域

限制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];
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章