MapKit 覆盖不出现
MapKit overlay does not appear
我正在尝试向我的地图添加一个圆形叠加层。我按照苹果文档进行了这么远,但是当我 运行 应用程序时,叠加层没有出现。这是我的代码...
@IBOutlet var map: MKMapView!
let location = CLLocationCoordinate2DMake(40.73085, -73.99750)
let regionRadius: CLLocationDistance = 5500
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let diskRenderer: MKCircleRenderer = MKCircleRenderer.init()
diskRenderer.fillColor = UIColor.init(red: 0, green: 192, blue: 295, alpha: 1)
return diskRenderer
}
override func viewDidLoad() {
super.viewDidLoad()
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location, regionRadius, regionRadius)
map.setRegion(coordinateRegion, animated: true)
let diskOverlay: MKCircle = MKCircle.init(centerCoordinate: location, radius: 5000)
map.addOverlay(diskOverlay)
// Do any additional setup after loading the view.
}
我正在自学所有这些东西,如果我犯了一个明显的错误,请原谅我。
查看此问题的已接受答案:
步骤是:
确保此控制器实现 MKMapViewDelegate
:
class YourViewController: UIViewController, MKMapViewDelegate
在viewDidLoad
中将地图上的委托设置为自己:
override func viewDidLoad() {
super.viewDidLoad()
map.delegate = self;`
添加以下函数来渲染叠加层(更改颜色等):
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
if let overlay = overlay as? MKCircle {
let circleRenderer = MKCircleRenderer(circle: overlay)
circleRenderer.fillColor = UIColor.blueColor()
return circleRenderer
}
else {
return MKOverlayRenderer(overlay: overlay)
}
}
你设置的圆圈半径太大了,整个地图都是蓝色的。将它设置为较小的值,例如 1000,以便您可以看到圆圈。
class 中的对象被设置为 mkmapviewdelegate:
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolygon class]]) {
MKPolygon *polygon = (MKPolygon *)overlay;
MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:polygon];
renderer.strokeColor = [UIColor blueColor];
renderer.lineWidth = 5.;
return renderer;
}
return [[MKOverlayRenderer alloc] initWithOverlay:overlay];
}
我正在尝试向我的地图添加一个圆形叠加层。我按照苹果文档进行了这么远,但是当我 运行 应用程序时,叠加层没有出现。这是我的代码...
@IBOutlet var map: MKMapView!
let location = CLLocationCoordinate2DMake(40.73085, -73.99750)
let regionRadius: CLLocationDistance = 5500
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let diskRenderer: MKCircleRenderer = MKCircleRenderer.init()
diskRenderer.fillColor = UIColor.init(red: 0, green: 192, blue: 295, alpha: 1)
return diskRenderer
}
override func viewDidLoad() {
super.viewDidLoad()
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location, regionRadius, regionRadius)
map.setRegion(coordinateRegion, animated: true)
let diskOverlay: MKCircle = MKCircle.init(centerCoordinate: location, radius: 5000)
map.addOverlay(diskOverlay)
// Do any additional setup after loading the view.
}
我正在自学所有这些东西,如果我犯了一个明显的错误,请原谅我。
查看此问题的已接受答案:
步骤是:
确保此控制器实现
MKMapViewDelegate
:class YourViewController: UIViewController, MKMapViewDelegate
在
viewDidLoad
中将地图上的委托设置为自己:override func viewDidLoad() { super.viewDidLoad() map.delegate = self;`
添加以下函数来渲染叠加层(更改颜色等):
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { if let overlay = overlay as? MKCircle { let circleRenderer = MKCircleRenderer(circle: overlay) circleRenderer.fillColor = UIColor.blueColor() return circleRenderer } else { return MKOverlayRenderer(overlay: overlay) } }
你设置的圆圈半径太大了,整个地图都是蓝色的。将它设置为较小的值,例如 1000,以便您可以看到圆圈。
class 中的对象被设置为 mkmapviewdelegate:
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolygon class]]) {
MKPolygon *polygon = (MKPolygon *)overlay;
MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:polygon];
renderer.strokeColor = [UIColor blueColor];
renderer.lineWidth = 5.;
return renderer;
}
return [[MKOverlayRenderer alloc] initWithOverlay:overlay];
}