我将如何使用地名然后使用 MKMapView 进行搜索?
How would I take the name of a place and then search for it using MKMapView?
我有这个应用程序,它会随机选择一个状态。让我们说它是纽约,我将如何使用纽约这个名字并按下按钮在地图中搜索它。我不希望用户必须输入它,我希望它是这样的,所以我按下一个按钮并进行搜索。我已经设置了地图,但我在这部分遇到了问题。
func randomStateGenerator() {
var randomState = Int(arc4random() % 50)
println(randomState)
if randomState == 0 {
println("NEW YORK")
newyork = SKLabelNode(fontNamed: "Happy Phantom")
newyork.text = "newyork"
newyork.zPosition = 22
newyork.fontSize = 25
newyork.fontColor = SKColor.blackColor()
newyork.position = CGPointMake(self.size.width / 2.0, self.size.height / 1.8)
self.addChild(newyork)
}
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>) {
var touch: UITouch = touches.first as! UITouch
var location = touch.locationInNode(self)
var node = self.nodeAtPoint(location)
if node.name == "find" {
}
}
}
使用此函数获取您传递的地址的经纬度
func geoCodeUsingAddress(address: String) -> CLLocationCoordinate2D {
var latitude: Double = 0
var longitude: Double = 0
var esc_addr: String = address.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
var req: String = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=\(esc_addr)"
var result: String = NSString.stringWithContentsOfURL(NSURL.URLWithString(req), encoding: NSUTF8StringEncoding, error: nil)
if result {
var scanner: NSScanner = NSScanner.scannerWithString(result)
if scanner.scanUpToString("\"lat\" :", intoString: nil) && scanner.scanString("\"lat\" :", intoString: nil) {
scanner.scanDouble(&latitude)
if scanner.scanUpToString("\"lng\" :", intoString: nil) && scanner.scanString("\"lng\" :", intoString: nil) {
scanner.scanDouble(&longitude)
}
}
}
var center: CLLocationCoordinate2D
center.latitude = latitude
center.longitude = longitude
return center
}
此函数将 return 经纬度,借助经纬度将其显示在您的地图中。
我有这个应用程序,它会随机选择一个状态。让我们说它是纽约,我将如何使用纽约这个名字并按下按钮在地图中搜索它。我不希望用户必须输入它,我希望它是这样的,所以我按下一个按钮并进行搜索。我已经设置了地图,但我在这部分遇到了问题。
func randomStateGenerator() {
var randomState = Int(arc4random() % 50)
println(randomState)
if randomState == 0 {
println("NEW YORK")
newyork = SKLabelNode(fontNamed: "Happy Phantom")
newyork.text = "newyork"
newyork.zPosition = 22
newyork.fontSize = 25
newyork.fontColor = SKColor.blackColor()
newyork.position = CGPointMake(self.size.width / 2.0, self.size.height / 1.8)
self.addChild(newyork)
}
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>) {
var touch: UITouch = touches.first as! UITouch
var location = touch.locationInNode(self)
var node = self.nodeAtPoint(location)
if node.name == "find" {
}
}
}
使用此函数获取您传递的地址的经纬度
func geoCodeUsingAddress(address: String) -> CLLocationCoordinate2D {
var latitude: Double = 0
var longitude: Double = 0
var esc_addr: String = address.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
var req: String = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=\(esc_addr)"
var result: String = NSString.stringWithContentsOfURL(NSURL.URLWithString(req), encoding: NSUTF8StringEncoding, error: nil)
if result {
var scanner: NSScanner = NSScanner.scannerWithString(result)
if scanner.scanUpToString("\"lat\" :", intoString: nil) && scanner.scanString("\"lat\" :", intoString: nil) {
scanner.scanDouble(&latitude)
if scanner.scanUpToString("\"lng\" :", intoString: nil) && scanner.scanString("\"lng\" :", intoString: nil) {
scanner.scanDouble(&longitude)
}
}
}
var center: CLLocationCoordinate2D
center.latitude = latitude
center.longitude = longitude
return center
}
此函数将 return 经纬度,借助经纬度将其显示在您的地图中。