我想知道是否可以仅使用Map Kit在地图上显示特定区域而不是全部世界地图。 如果我想在我的应用程序中显示亚洲地图,那么地图工具包隐藏地图的其余部分。使用MapKit显示特定区域
4
A
回答
9
处理“地图包隐藏地图剩余部分”的要求,有一两件事你可以做的是创造一个黑色多边形叠加与切口亚洲各地(或你喜欢的地方)覆盖了整个世界。
例如,当你初始化地图(在viewDidLoad中如):
CLLocationCoordinate2D asiaCoords[4]
= { {55,60}, {55,150}, {0,150}, {0,60} };
//change or add coordinates (and update count below) as needed
self.asiaOverlay = [MKPolygon polygonWithCoordinates:asiaCoords count:4];
CLLocationCoordinate2D worldCoords[4]
= { {90,-180}, {90,180}, {-90,180}, {-90,-180} };
MKPolygon *worldOverlay
= [MKPolygon polygonWithCoordinates:worldCoords
count:4
interiorPolygons:[NSArray arrayWithObject:asiaOverlay]];
//the array can have more than one "cutout" if needed
[myMapView addOverlay:worldOverlay];
并实现viewForOverlay
委托方法:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolygon class]])
{
MKPolygonView *pv = [[[MKPolygonView alloc] initWithPolygon:overlay] autorelease];
pv.fillColor = [UIColor blackColor];
pv.alpha = 1.0;
return pv;
}
return nil;
}
这看起来是这样的:
如果你还想要r限制用户滚动到亚洲以外或缩小太远,那么您也需要手动执行此操作。在Restrict MKMapView scrolling中描述了一种可能的方式。用asiaOverlay
代替theOverlay
。
0
您可以将区域指定为MKCoordinateRegion,然后告诉MKMapView实例仅使用setRegion和regionThatFits消息显示该区域。
或者,您可以使用visibleMapRect属性而不是区域。这可能会更好地满足您的需求。
简而言之,请阅读Apple提供的MKMapView类参考文档。
从我过去做过的假设mapView和名为locationToShow的给定位置取代我使用了MKCoordinateRegion。
- (void) goToLocation {
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.01;
span.longitudeDelta=0.01;
region.span=span;
region.center=locationToShow;
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
}
相关问题
- 1. Mapkit显示注释区域
- 2. 在特定区域使用GUI显示图像
- 3. iphone-Mapkit:如果用户在特定区域内进入,则发出提示
- 4. 如何使NSDateFormatter显示区域特定的日期?
- 5. 斯威夫特MapKit不显示指示
- 6. 使用BoundingBox生成的特定区域
- 7. Imagemap;当悬停在特定区域时显示文本
- 8. 在Google地图上显示特定区域
- 9. 在特定区域显示我的下拉框
- 10. DICOM查看器 - 突出显示特定区域
- 11. 如何在iPhone中显示UIImageView中的特定区域?
- 12. 如何突出显示面板网格上的特定区域
- 13. 编辑地图只显示特定区域/位置
- 14. 显示黑白MapKit
- 15. MySQL只显示特定领域
- 16. 在MapKit上的区域更改Android Sdk
- 17. iOS操作,基于MapKit中的区域
- 18. 在iPad上限制mapkit区域
- 19. MultiScaleImage缩放特定区域
- 20. TwainDotNet特定区域扫描
- 21. 拖放到特定区域
- 22. Emacs区域突出显示
- 23. Highcharts显示空白区域
- 24. 中心显示区域
- 25. 显示在文本区域
- 26. Android:ListFragment显示空白区域
- 27. 使用date()函数在特定时区显示时间/日期
- 28. Backbone.Marionette Fade仅适用于特定区域?
- 29. 在特定区域禁用Android SwipeRefreshLayout
- 30. VB.NET - 功能区显示黑色区域
创建包含世界的'MKPolygon'的代码需要iOS 7的调整。如果您尝试创建一个跨越180°以上经度的4点多边形,它将自身反转为180模式:一个200°多边形为了解决这个问题,我们需要在两者之间增加2个额外的点:CLLocationCoordinate2D worldCoords [6] = {{90,0},{90,180},等等。 {-90,180},{-90,0},{-90,-180},{90,-180}};' – SaltyNuts 2013-11-05 19:38:48
@SaltyNuts,Anna我可以通过使用你们提出的世界坐标来达到预期的行为,谢谢你:),但是我面临着一个问题 - 当我试图向左或向右平移地图时,我可以观察到填充颜色没有覆盖范围 - http://i.stack.imgur.com /QSDQc.png,有什么办法可以增加填充颜色范围?请建议。 – Devarshi 2015-08-14 07:29:19