将字符串从我的应用程序传递到 Apple Maps 以便它可以搜索
Posted
技术标签:
【中文标题】将字符串从我的应用程序传递到 Apple Maps 以便它可以搜索【英文标题】:Passing a String from my app to Apple Maps so that it can Search 【发布时间】:2018-05-02 19:10:09 【问题描述】:我正在尝试找出将字符串值传递给苹果地图的最佳方法,以便我可以搜索它。我正在开发一个类中的应用程序,该应用程序从数组中提取随机字符串,我希望能够调用设备上已经存在的苹果地图并搜索选择的任何字符串。我查看了 MKLocalSearchRequest,我认为这可能是最简单的选择,我只是不确定如何将它与 Apple Maps 集成,而不是在应用程序内将它与 mapkitview 一起使用。这是我发现的一种方法,它似乎可以工作我只是不确定如何声明它。
class func openMaps(with mapItems: [MKMapItem],
launchOptions: [String : Any]? = nil) -> Bool
【问题讨论】:
Open Apple Maps programmatically in ios8, Xcode 7, Swift 2的可能重复 @rbaldwin 我看了那个,它似乎对我一点帮助都没有 @CalebBartholomew 如果它是一个字符串值,您可以使用 rbaldwin 建议的方法,请查看documentation 中有关地图链接的更多信息,尽管它已经过时但仍在工作。 @NajdanTomić 你给我的文档链接与 rbaldwin 给我的完美配合。我能够把它拼凑起来。非常感谢 【参考方案1】:import CoreLocation
然后在viewDidLoad
:
let geocoder = CLGeocoder()
let locationString = "London"
geocoder.geocodeAddressString(locationString) (placemarks, error) in
if let error = error
print(error.localizedDescription)
else
if let location = placemarks?.first?.location
let query = "?ll=\(location.coordinate.latitude),\(location.coordinate.longitude)"
let urlString = "http://maps.apple.com/".appending(query)
if let url = URL(string: urlString)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
【讨论】:
这与上述文档完美结合。谢谢【参考方案2】:您有很多选择:
import MapKit
第一
UIApplication.shared.openURL(NSURL(string:
"comgooglemaps://?saddr=&daddr=\(place.latitude),\(place.longitude)&directionsmode=driving")! as URL)
或者
@IBAction func action(_ sender: Any)
let latitude: CLLocationDegrees = 37.2
let longitude: CLLocationDegrees = 22.9
let regionDistance:CLLocationDistance = 10000
let coordinates = CLLocationCoordinate2DMake(latitude, longitude)
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 = "Place Name"
mapItem.openInMaps(launchOptions: options)
【讨论】:
假设我在执行搜索时使用mapItem.name = "Taco Bell"
,它会将我带到海洋中的一个随机位置。有没有办法让它自动在你周围搜索?【参考方案3】:
Swift 4 及更高版本
使用此版本获取地址的坐标
import CoreLocation
let myAddress = "One,Apple+Park+Way,Cupertino,CA,95014,USA"
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(myAddress) (placemarks, error) in
guard let placemarks = placemarks?.first else return
let location = placemarks.location?.coordinate ?? CLLocationCoordinate2D()
guard let url = URL(string:"http://maps.apple.com/?daddr=\(location.latitude),\(location.longitude)") else return
UIApplication.shared.open(url)
【讨论】:
以上是关于将字符串从我的应用程序传递到 Apple Maps 以便它可以搜索的主要内容,如果未能解决你的问题,请参考以下文章
Apple Watch 不向 iPhone 传递数据 - Swift
通过使用纬度和经度的导航调用 maps.app(Apple 地图)