如何将区域叠加到地图上?

时间:2014-07-04 14:21:56

标签: ios objective-c maps overlay

我知道Objective-c有覆盖API,但我对地图绘制有点新意,并对它是如何工作感到好奇。有没有办法将区域预先绘制到地图上,然后从这张地图中读取?我是否必须获得某个地区的每一个小点并阅读它?这一切是如何运作的?

我们想说我想为纽约州的每个城市设一个边界,怎么能实现呢?

或者让我说我想为我居住的街区画一个边界。天空是极限,但我不确定如何做到这一点。即使我必须聘请某人来绘制地区,这一切又如何运作?

我已经对API进行了一些研究,但不知道如何绘制图纸。

在这个例子中http://www.shawngrimes.me/2011/04/adding-polygon-map-overlays/我看到,对于一个多边形,有很多点用于绘制,因为我假设每次你改变方向,即使是最轻微的一点,你需要一个新点,因为它& #39;不像是从一个点到另一个点的直线。

我正在寻找的是让某人预先绘制我需要的地区(可能付钱给某人)并能够从某个地区读取。这是如何工作的,有人必须给我每一点吗?或者我是否获得了一些带有叠加图的地图图像?

1 个答案:

答案 0 :(得分:0)

有一些不同的MKOverlay类型用于执行此操作,例如MKCirce和MKPolygon,添加叠加层是一个两步过程。首先,您需要将MKOverlay添加到应用程序中,然后您需要覆盖

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay

第一阶段定义覆盖图,该函数将用于创建表示该覆盖图的视图。

以下代码取自我开发的应用程序,它将圆形叠加层放到地图上以指示搜索区域。

在初始化地图后的任意点设置以下代码

circle = [MKCircle circleWithCenterCoordinate:target.center radius:target.radius];
[map addOverlay:circle];

此部分代码用于创建实际视图

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay
{
  MKCircleView *circleView = [[MKCircleView alloc] initWithOverlay:overlay];
  circleView.strokeColor = [UIColor systemGreen];
  circleView.fillColor = [[UIColor systemGreen] colorWithAlphaComponent:0.2];
  return circleView;
}

这将根据CLRegion对象的位置和半径创建一个绿色圆圈。

*请注意,如果您打算使用多种类型的MKOverlay,您可以在viewForOverlay函数中进行类型测试。

希望这有帮助。