https://developer.apple.com/documentation/mapkit/mkmapview/1452503-convert
https://news.mynavi.jp/article/20130123-geofencing/
https://github.com/ponpoko1968/GeofencingSampleApp
https://faboplatform.github.io/SwiftDocs/3.mapkit/013_line/
上記サイトを参考にさせていただきました。
class ViewController: UIViewController,MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
// 東京駅
let latitude = 35.6812362
let longitude = 139.7649361
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
mapView.delegate = self
self.initMap()
self.drawSquare()
}
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
}
else {
pinView?.annotation = annotation
}
return pinView
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
// rendererを生成.
let myPolyLineRendere: MKPolylineRenderer = MKPolylineRenderer(overlay: overlay)
// 線の太さを指定.
myPolyLineRendere.lineWidth = 5
// 線の色を指定.
myPolyLineRendere.strokeColor = UIColor.red
return myPolyLineRendere
}
func drawingPin(){
let center:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
let region:MKCoordinateRegion = MKCoordinateRegion(center: center,latitudinalMeters: 1000.0,longitudinalMeters: 1000.0)
self.mapView.setRegion(region, animated: true)
//ピンを追加
let annotation:MKPointAnnotation = MKPointAnnotation.init()
annotation.coordinate = center
self.mapView.addAnnotation(annotation)
}
func drawSquare(){
let point_1 = CLLocationCoordinate2D(latitude: latitude - 0.001, longitude: longitude - 0.001)
let point_2 = CLLocationCoordinate2D(latitude: latitude - 0.001, longitude: longitude + 0.001)
let point_3 = CLLocationCoordinate2D(latitude: latitude + 0.001, longitude: longitude + 0.001)
let point_4 = CLLocationCoordinate2D(latitude: latitude + 0.001, longitude: longitude - 0.001)
var line1 = [point_1,point_2]
var line2 = [point_2,point_3]
var line3 = [point_3,point_4]
var line4 = [point_4,point_1]
let myPolyLine_1: MKPolyline = MKPolyline(coordinates: &line1, count: line1.count)
let myPolyLine_2: MKPolyline = MKPolyline(coordinates: &line2, count: line2.count)
let myPolyLine_3: MKPolyline = MKPolyline(coordinates: &line3, count: line3.count)
let myPolyLine_4: MKPolyline = MKPolyline(coordinates: &line4, count: line4.count)
// mapViewにcircleを追加.
mapView.addOverlay(myPolyLine_1)
mapView.addOverlay(myPolyLine_2)
mapView.addOverlay(myPolyLine_3)
mapView.addOverlay(myPolyLine_4)
}
func initMap(){
// 緯度・軽度を設定
let location = CLLocationCoordinate2DMake(latitude, longitude)
// マップビューに緯度・軽度を設定
mapView.setCenter(location, animated:true)
// 縮尺を設定
var region = mapView.region
region.center = location
region.span.latitudeDelta = 0.01
region.span.longitudeDelta = 0.01
// マップビューに縮尺を設定
mapView.setRegion(region, animated:true)
}