【问题标题】:MKMapView - Limit map scroll to a square overlayMKMapView - 将地图滚动限制为方形覆盖
【发布时间】:2012-06-22 07:54:41
【问题描述】:

我有一个带有方形叠加层的 MKMapView,描述为:

   CLLocationCoordinate2D coordsBg[5]={
    CLLocationCoordinate2DMake(31.750865,35.180882),
    CLLocationCoordinate2DMake(31.740331,35.180882),
    CLLocationCoordinate2DMake(31.740331,35.165452),
    CLLocationCoordinate2DMake(31.750865,35.165452),
    CLLocationCoordinate2DMake(31.750865,35.180882)
};     

MKPolygon *bg=[MKPolygon polygonWithCoordinates:coordsBg count:5];
[map addOverlay:bg];

我希望限制用户滚动到叠加层之外。

我可以为此限制 MKMapView 滚动视图吗?还是有其他方法?

谢谢

沙尼

【问题讨论】:

标签: ios mkmapview mapkit mkoverlay


【解决方案1】:

经过几个小时的努力,我得到了这个非常适合我的解决方案。

搞混了:

此帖:set the zoom level of an mkmapview

这个链接:restrict mkmapview scrolling 来自@Anna Karenina 对我的问题的评论。

这是我的代码:

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    lastGoodMapRect = mapView.visibleMapRect;
    lastGoodRegion = mapView.region;
}

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{

    if (manuallyChangingMapRect) {
        manuallyChangingMapRect=NO;
        return;
    }

    if( [mapView zoomLevel] > 16 )
    {
        [mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:16 animated:YES];
    }

    MKMapRect visibleRect = mapView.visibleMapRect;
    MKMapRect OverlayRect = bg.boundingMapRect;
    MKMapRect intersectionRect = MKMapRectIntersection(visibleRect,OverlayRect);

    //you can change the min and max zoom off course
    if(!MKMapRectEqualToRect(visibleRect,intersectionRect)){
        if( [mapView zoomLevel] < 15){

            [mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:15 animated:YES];
        }else if( [mapView zoomLevel] > 16 )
        {
            [mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:16 animated:YES];
        }else{
            manuallyChangingMapRect=YES;
            [mapView setVisibleMapRect:lastGoodMapRect animated:YES];
        }
    }

}

【讨论】:

  • 请添加您为此使用的所有代码。 MKMapView 类别,您使用的界面。我不明白它是如何工作的[mapView zoomLevel]
  • 是的,如果您要添加代码,请包括所有内容。
  • 同意rowwingman。你能告诉我这个 [mapView zoomLevel] 是从哪里来的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多