首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapView区域

MKMapView区域
EN

Stack Overflow用户
提问于 2013-09-06 21:13:12
回答 1查看 738关注 0票数 1

我有一个关于在我的MKMapView上设置区域的问题。

我需要将mapview设置为在视图首次加载时显示特定区域。

该区域的东北和西南纬度和经度为:

代码语言:javascript
复制
North East Coordinate Lat:59.623724 Long:2.911587
South West Coordinate Lat:49.004833 Long:-11.361825

此外,我想‘锁定’这个地区的地图视图。理想情况下,锁将是透明的,即:上面的坐标表示MKMapView的最大范围。然而,如果这仅仅是一个检查东北和西南坐标

代码语言:javascript
复制
- (void)mapView:(MKMapView *)aMapView regionDidChangeAnimated:(BOOL)animated 

如果它们超过了我的最大范围,重新设置视图,这对我也是可以接受的。

非常感谢你在这个问题上的任何建议。

编辑:关于我问题的第一部分,我想我可以使用以下代码在MKMapView上设置初始区域:

代码语言:javascript
复制
CLLocationCoordinate2D neCoord;
neCoord.latitude = 59.787643;
neCoord.longitude = 3.025857;

CLLocationCoordinate2D swCoord;
swCoord.latitude = 49.394171;
swCoord.longitude = -11.036642;
MKCoordinateRegion region;
region.center.latitude = neCoord.latitude - (neCoord.latitude - swCoord.latitude) * 0.5;
region.center.longitude = neCoord.longitude + (swCoord.longitude - neCoord.longitude) * 0.5;
region.span.latitudeDelta = fabs(neCoord.latitude - swCoord.latitude); // Add a little extra space on the sides
region.span.longitudeDelta = fabs(swCoord.longitude - neCoord.longitude); // Add a little extra space on the sides

region = [self.mapView regionThatFits:region];
[self.mapView setRegion:region animated:YES];
EN

回答 1

Stack Overflow用户

发布于 2013-09-06 22:29:43

首先,您需要确保在显示视图后在地图视图上设置区域。如果在地图加载之前设置它,它可能不会以该区域为中心。一旦你这样做了,只需设置self.mapView.zoomEnabled = NO;self.mapView.scrollEnabled = NO;,它将阻止用户移动地图。

如果你想锁定用户可以查看的最大界限,但仍然允许滚动和缩放,你将不得不使用-mapView:regionDidChangeAnimated:,如果用户离开你的界限,你将不得不“撞”回你的界限。请注意,这样的用户体验可能会很糟糕-他们会左右移动,松开,然后地图会突然移回您定义的区域。你可以尝试使用-mapView:regionWillChangeAnimated:并修改地图区域,如果它们离开了你的边界,这可能会少一点不和谐。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18658726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档