我知道Objective-c有覆盖API,但我对地图绘制有点新意,并对它是如何工作感到好奇。有没有办法将区域预先绘制到地图上,然后从这张地图中读取?我是否必须获得某个地区的每一个小点并阅读它?这一切是如何运作的?
我们想说我想为纽约州的每个城市设一个边界,怎么能实现呢?
或者让我说我想为我居住的街区画一个边界。天空是极限,但我不确定如何做到这一点。即使我必须聘请某人来绘制地区,这一切又如何运作?
我已经对API进行了一些研究,但不知道如何绘制图纸。
在这个例子中http://www.shawngrimes.me/2011/04/adding-polygon-map-overlays/
我看到,对于一个多边形,有很多点用于绘制,因为我假设每次你改变方向,即使是最轻微的一点,你需要一个新点,因为它& #39;不像是从一个点到另一个点的直线。
我正在寻找的是让某人预先绘制我需要的地区(可能付钱给某人)并能够从某个地区读取。这是如何工作的,有人必须给我每一点吗?或者我是否获得了一些带有叠加图的地图图像?
答案 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函数中进行类型测试。
希望这有帮助。