如何使用Mapkit和Swift在设置的位置叠加一个圆 [英] How do I overlay a circle at a set location using mapkit and swift

查看:58
本文介绍了如何使用Mapkit和Swift在设置的位置叠加一个圆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难弄清楚如何在用户位置唯一的所需位置显示透明的圆形或矩形.我是mapkit的初学者,在此先感谢.

I am having trouble trying to figure out how to display a transparent circle or rectangle at a desired location unique from the users location. Im a beginner with mapkit so thanks in advance.

class FirstViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate
{

@IBOutlet weak var mapView: MKMapView!

let locationManager = CLLocationManager()

override func viewDidLoad()
{
    super.viewDidLoad()

    self.locationManager.delegate = self
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.startUpdatingLocation()
    self.mapView.showsUserLocation = true

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
    let location = locations.last
    let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))
    self.mapView.setRegion(region, animated: true)
    self.locationManager.stopUpdatingLocation()//
}

func locationManager(manager: CLLocationManager, didFailWithError error: NSError)
{
    print("Errors: " + error.localizedDescription)
}

}

推荐答案

已更新为支持Swift 4.2.提供注释以解释我所做的几种选择.

This has been updated to support Swift 4.2. Comments are provided to explain several of the choices I made.

import UIKit
import MapKit

class Map: UIViewController {
    var mapView = MKMapView()

    func setup() {
        // Assign delegate here. Can call the circle at startup,
        // or at a later point using the method below.
        // Includes <# #> syntax to simplify code completion.
        mapView.delegate = self
        showCircle(coordinate: <#CLLocationCoordinate2D#>,
                   radius: <#CLLocationDistance#>)
    }

    // Radius is measured in meters
    func showCircle(coordinate: CLLocationCoordinate2D,
                    radius: CLLocationDistance) {
        let circle = MKCircle(center: coordinate,
                              radius: radius)
        mapView.addOverlay(circle)
    }
}

extension Map: MKMapViewDelegate {
    func mapView(_ mapView: MKMapView,
                 rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        // If you want to include other shapes, then this check is needed.
        // If you only want circles, then remove it.
        if let circleOverlay = overlay as? MKCircle {
            let circleRenderer = MKCircleRenderer(overlay: circleOverlay)
            circleRenderer.fillColor = .black
            circleRenderer.alpha = 0.1

            return circleRenderer
        }

        // If other shapes are required, handle them here
        return <#Another overlay type#>
    }
}

这篇关于如何使用Mapkit和Swift在设置的位置叠加一个圆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆