【问题标题】:IOS7 Restrict MapView to a certain area or regionIOS7 将 MapView 限制在某个区域或区域
【发布时间】:2013-10-31 20:09:58
【问题描述】:

是否有人知道如何将地图视图限制在某个区域,但仍允许在该区域内缩放和滚动,但锁定地图以使其不会超出该区域。我曾尝试使用 UIScrollViewDelegate 但它不适用于 IOS6 及更高版本。我也尝试使用 regiondidchanged 但这不会锁定滚动和平移到区域之外。

谢谢,

约翰

【问题讨论】:

    标签: ios7 mkmapview mkoverlay


    【解决方案1】:

    我以前在 regiondidchanged 方法中做过。 事实上,如果您的地图中心超出了您定义的区域(测试纬度和经度),只需将地图重置为该区域的中心......

    if(![self isValid:self.mapView.center])
        [self.mapView setRegion:defaultValidRegion animated:YES];
    

    编辑

    您是否尝试过考虑这个项目:GeoFencer?除了搜索mapView的scrollview时他的算法有问题,似乎是对应的,但我认为可以通过替换来解决

    UIScrollView * scroll = [[[[mapView subviews] objectAtIndex:0] subviews] objectAtIndex:0];
    

    通过

    UIScrollView * scroll = [[[[mapView subviews] objectAtIndex:0] subviews] objectAtIndex:1];
    

    尝试在调试器中使用此命令在视图层次结构中定位正确的滚动视图

    po [self.mapView recursiveDescription]
    

    【讨论】:

    • 那没用。调用 regionDidChangeAnimated 为时已晚。调用该事件时,地图视图已更改。我需要防止该区域被移动,而用户没有看到可能通过滚动或其他方式移动的地图视图。
    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多