Xcode 如何从 UIActivityViewController 共享用户位置
How to share user location from UIActivityViewController in Xcode
我知道如何共享其他对象,如图像、URL、字符串或其他。但我不知道如何从 UIActivityViewController
分享当前位置。
我试过了
@IBAction func sendLocation(sender: UIBarButtonItem) {
if mapView.userLocationVisible {
let currentCoordinate = mapView.userLocation.location!
print(currentCoordinate)
let arrayLocation = [currentCoordinate]
let activityController = UIActivityViewController(activityItems: arrayLocation, applicationActivities: nil)
presentViewController(activityController, animated: true, completion: nil)
} else {
print("User location is not visible")
}
}
但我在控制台中看到 <+53.09618071,+49.96449468> +/- 20.00m(速度 0.00 mps / 航向 -1.00)@ 10/11/15,1:54:26 PM Samara标准时间。 UIActivityViewController
没有分享任何位置。请帮助我。
@IBAction func shareLocation(sender: UIBarButtonItem) {
// print(receivedDictionary)
let postalAdress = CNMutablePostalAddress()
postalAdress.street = receivedDictionary["Name"] as! String
postalAdress.city = receivedDictionary["City"] as! String
postalAdress.state = receivedDictionary["State"] as! String
postalAdress.postalCode = receivedDictionary["ZIP"] as! String
postalAdress.country = receivedDictionary["Country"] as! String
postalAdress.ISOCountryCode = receivedDictionary["CountryCode"] as! String
let streetName = receivedDictionary["Name"] as! String
let urlAddress = receivedDictionary["FormattedAddressLines"] as! [String]
// print(urlAddress)
let postalContact = CNLabeledValue(label: streetName, value: postalAdress)
let urlAddressContact = CNLabeledValue(label: "map url", value: "http://maps.apple.com/maps?address=\(urlAddress.description)")
let contact = CNMutableContact()
contact.contactType = .Organization
contact.organizationName = streetName
contact.departmentName = streetName
contact.postalAddresses = [postalContact]
contact.urlAddresses = [urlAddressContact]
// create path
let directory = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let path = directory.first!.path!.stringByAppendingString("/\(streetName).loc.vcf")
// print(path)
do {
let contactData = try CNContactVCardSerialization.dataWithContacts([contact])
contactData.writeToFile(path, atomically: true)
let url = NSURL(fileURLWithPath: path)
// print(url)
let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil)
presentViewController(activityViewController, animated: true, completion: nil)
} catch {
print("CNContactVCardSerialization cannot save address")
}
}
我知道如何共享其他对象,如图像、URL、字符串或其他。但我不知道如何从 UIActivityViewController
分享当前位置。
我试过了
@IBAction func sendLocation(sender: UIBarButtonItem) {
if mapView.userLocationVisible {
let currentCoordinate = mapView.userLocation.location!
print(currentCoordinate)
let arrayLocation = [currentCoordinate]
let activityController = UIActivityViewController(activityItems: arrayLocation, applicationActivities: nil)
presentViewController(activityController, animated: true, completion: nil)
} else {
print("User location is not visible")
}
}
但我在控制台中看到 <+53.09618071,+49.96449468> +/- 20.00m(速度 0.00 mps / 航向 -1.00)@ 10/11/15,1:54:26 PM Samara标准时间。 UIActivityViewController
没有分享任何位置。请帮助我。
@IBAction func shareLocation(sender: UIBarButtonItem) {
// print(receivedDictionary)
let postalAdress = CNMutablePostalAddress()
postalAdress.street = receivedDictionary["Name"] as! String
postalAdress.city = receivedDictionary["City"] as! String
postalAdress.state = receivedDictionary["State"] as! String
postalAdress.postalCode = receivedDictionary["ZIP"] as! String
postalAdress.country = receivedDictionary["Country"] as! String
postalAdress.ISOCountryCode = receivedDictionary["CountryCode"] as! String
let streetName = receivedDictionary["Name"] as! String
let urlAddress = receivedDictionary["FormattedAddressLines"] as! [String]
// print(urlAddress)
let postalContact = CNLabeledValue(label: streetName, value: postalAdress)
let urlAddressContact = CNLabeledValue(label: "map url", value: "http://maps.apple.com/maps?address=\(urlAddress.description)")
let contact = CNMutableContact()
contact.contactType = .Organization
contact.organizationName = streetName
contact.departmentName = streetName
contact.postalAddresses = [postalContact]
contact.urlAddresses = [urlAddressContact]
// create path
let directory = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let path = directory.first!.path!.stringByAppendingString("/\(streetName).loc.vcf")
// print(path)
do {
let contactData = try CNContactVCardSerialization.dataWithContacts([contact])
contactData.writeToFile(path, atomically: true)
let url = NSURL(fileURLWithPath: path)
// print(url)
let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil)
presentViewController(activityViewController, animated: true, completion: nil)
} catch {
print("CNContactVCardSerialization cannot save address")
}
}