Hôm nay mình sẽ hướng dẫn các bạn cách tạo và điều hướng người dùng đến một hoặc nhiều vị trí cố định trên ứng dụng thông qua Bản đồ mặc định của điện thoại
Bước 1
1.1 Khởi tạo 1 Project mới, ở View Controller bạn thêm 1 Button (có thể đổi tên Button thành địa chỉ mà bạn )
1.2 Ánh xạ Button vào class quản trị dưới dạng Action
Bước 2
2.1 Trở về class quản trị
import MapKit
2.2 Khởi tạo function
func gotoMap(lat: Float, lng: Float, name: String, phone: String) {
let regionDistance:CLLocationDistance = 1000;
let coordinates = CLLocationCoordinate2DMake(CLLocationDegrees(lat), CLLocationDegrees(lng))
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
let options = [MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)]
let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = name
mapItem.phoneNumber = phone
MKMapItem.openMaps(with: [mapItem, mapItem], launchOptions: options)
}
Ở đây, có khá nhiều tuỳ biến cho bạn:
mapItem.name = name //Bạn có thể tuỳ chọn tên của vị trí của
mapItem.phoneNumber = phone //Hoặc số điện
Còn khá nhiều tuỳ biến khác như tên website,....
2.3 Trở về Button mà lúc nãy ta Ánh xạ (Action) thêm vị trí mà bạn , ví dụ:
let lat:Float = 16.039245
let lng:Float = 108.218020
let name: String = "Skylab House"
let phone:String = "0969 6969 69"
*** Bản đồ sẽ hiển thị vị trí của bạn dựa vào Latitude và Longitude (bạn có thể search Google để hiểu rõ hơn và cách để lấy toạ độ nhé! )
2.4 Đến đây bạn chỉ cần gọi function lúc này bạn khởi tạo và thêm dữ liệu mà bạn muốn vào function đó
gotoMap(lat: lat, lng: lng, name: name, phone: phone)
Bước 3 Run app và trải nghiệm
Toàn bộ Source Code
import UIKit
import MapKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func gotoMyAddress(_ sender: Any) {
//Create your Address
let lat:Float = 16.039245
let lng:Float = 108.218020
let name: String = "Skylab House"
let phone:String = "0969 6969 69"
gotoMap(lat: lat, lng: lng, name: name, phone: phone)
}
//create Function
func gotoMap(lat: Float, lng: Float, name: String, phone: String) {
let regionDistance:CLLocationDistance = 1000;
let coordinates = CLLocationCoordinate2DMake(CLLocationDegrees(lat), CLLocationDegrees(lng))
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
let options = [MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)]
let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = name
mapItem.phoneNumber = phone
MKMapItem.openMaps(with: [mapItem, mapItem], launchOptions: options)
}
}
Chúc các bạn thành công!
Phương Duy