用户是否可以搜索地图以查看我在swift中锁定的位置
我正在创建一个应用程序,该应用程序具有我添加的PIN,当单击打开包含建筑物信息的警报时,该PIN会被添加。我想让用户搜索这些位置,但我不确定这是否可行,因为我还没有在上面找到任何代码。请让我知道,如果你知道如何做到这一点或有任何建议用户是否可以搜索地图以查看我在swift中锁定的位置,swift,mkmapview,Swift,Mkmapview,我正在创建一个应用程序,该应用程序具有我添加的PIN,当单击打开包含建筑物信息的警报时,该PIN会被添加。我想让用户搜索这些位置,但我不确定这是否可行,因为我还没有在上面找到任何代码。请让我知道,如果你知道如何做到这一点或有任何建议 import UIKit import MapKit import CoreLocation class CustomPointAnnotiation: MKPointAnnotation { var imageName: String! } class
import UIKit
import MapKit
import CoreLocation
class CustomPointAnnotiation: MKPointAnnotation {
var imageName: String!
}
class MapVC: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var manager = CLLocationManager()
class Location: NSObject, MKAnnotation {
var title: String?
var coordinate: CLLocationCoordinate2D
var info: String
init(title: String, coordinate: CLLocationCoordinate2D, info: String) {
self.title = title
self.coordinate = coordinate
self.info = info
}
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
// 1
let identifier = "Location"
// 2
if annotation.isKindOfClass(Location.self) {
// 3
var image: UIImageView
image = UIImageView(frame:CGRect(x: 50,y: 200,width: 250,height: 180))
image.image = UIImage(named:"")
self.view.addSubview(image)
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil {
//4
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView!.canShowCallout = true
// 5
let btn = UIButton(type: .DetailDisclosure)
annotationView!.rightCalloutAccessoryView = btn
} else {
// 6
annotationView!.annotation = annotation
}
return annotationView
}
// 7
return nil
}
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let location = view.annotation as! Location
let placeName = location.title
let placeInfo = location.info
var imageView: UIImageView
imageView = UIImageView(frame:CGRect(x: 50,y: 200,width: 250,height: 180))
imageView.backgroundColor = UIColor.whiteColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
if location.title == "Woodburn Hall" {
imageView.image = UIImage(named:"woodburn.png")
self.view.addSubview(imageView)
}
let ac = UIAlertController(title: placeName, message:placeInfo, preferredStyle:UIAlertControllerStyle.ActionSheet)
ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(ac, animated: true, completion: nil)
imageView.removeFromSuperview()
}
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
// Core Location
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
//set initial location to Indiana University
let initialLocation = CLLocation(latitude: 39.17, longitude: -86.5148)
let regionRadius: CLLocationDistance = 100
func centerMapOnLocation(location:CLLocation){
let coordinateRegion =
MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 2.0, regionRadius * 2.0)
mapView.setRegion(coordinateRegion, animated: true)
mapView.mapType = MKMapType.Hybrid;
}
centerMapOnLocation(initialLocation)
let unionLocation = Location(title: "Memorial Union", coordinate: CLLocationCoordinate2D(latitude: 39.167541, longitude: -86.522387), info: "Address: 900 E 7th St, Bloomington, IN 47408 \n The student union on the campus. Was dedicated in June of 1932. As of date, it is the second largest student union, worldwide. Has multiple stages, offices, directors offices, and even a hotel in the building.")
mapView.addAnnotation(unionLocation)
let ashtonLocation = Location(title: "Ashton Residence Hall", coordinate:CLLocationCoordinate2D(latitude: 39.171550, longitude: -86.509768), info: "Address: 1800 E 10th St, Bloomington, IN 47408 \n Includes single dorms only and is located in central neighborhood.")
mapView.addAnnotation(ashtonLocation)
如果您能告诉我们如何或在哪里保存这些PIN码,将非常有帮助。您是否有一个动态添加PIN的后端,或者它们在应用程序中是“硬编码”的?首先,您需要某种保存机制,以便代码的其他部分可以访问该数据 如果要使用API将它们动态保存到数据库中,最好的方法是开发一种获取搜索参数并返回结果的方法 如果PIN保存到应用程序附带的数据库或文件中,则需要使用适当的方法从任何文件、格式或数据库中查询这些PIN