IOS MapKit 输入城市名获取经纬度显示地图
2015-08-10 20:49
531 查看
最近接触到iOS 的mapkit,大概弄了一下,初学者,第一篇博客,还请各位多多指点。
下面是简单的实现,希望对各位有帮助
首先是storyboard
右边蓝色view继承MKMapView。
具体实现:
ViewController.swift
import UIKit
import MapKit
class ViewController:
UIViewController {
var mapData:CLLocationCoordinate2D =
CLLocationCoordinate2D(latitude: 0, longitude:
0)
@IBOutlet weak
var textSearch: UITextField!
@IBAction func submitClicked(sender:
UIButton) {
mapData=MapHelper.geoCodeUsingAddress(textSearch.text)
self.performSegueWithIdentifier("showMap", sender:
self)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//界面跳转传值
override func prepareForSegue(segue:
UIStoryboardSegue, sender:
AnyObject?) {
if segue.identifier ==
"showMap" {
if let a = segue.destinationViewController
as? mapKitViewController {
a.city=textSearch.text
a.latitude=mapData.latitude
a.longitude=mapData.longitude
}
}
}
}
mapKitViewController.swift放置地图的界面
import UIKit
import MapKit
class mapKitViewController:
UIViewController , MKMapViewDelegate{
var city=String()
var latitude=Double()
var longitude=Double()
@IBOutlet var mapview:
MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let location=CLLocationCoordinate2D(latitude:
latitude, longitude:
longitude)
let span=MKCoordinateSpanMake(1,
1) //可以改变地图显示的比例
let region=MKCoordinateRegion(center: location, span: span)
mapview.setRegion(region, animated:
true)
let annotation = MKPointAnnotation()
annotation.coordinate=location
annotation.title=city
annotation.subtitle="China"
mapview.addAnnotation(annotation)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
MapHelper.swift 根据城市明获取城市经纬度
import Foundation
import MapKit
class MapHelper{
static func geoCodeUsingAddress(address:String) ->CLLocationCoordinate2D{
var latitude = 0.0
var longitude = 0.0
let esc_addr = address
let req =
"http://maps.google.cn/maps/api/geocode/json?sensor=false&address=\(address)"
let result:NSString? =
NSString(contentsOfURL:
NSURL(string: req)!, encoding: NSUTF8StringEncoding, error:
nil)
if let value=result{
let scanner:NSScanner =
NSScanner(string: value
as String)
if(scanner.scanUpToString("\"location\" :", intoString:
nil) && scanner.scanString("\"location\" :", intoString:
nil)){
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 =
CLLocationCoordinate2D(latitude:
0, longitude: 0);
center.latitude = latitude;
center.longitude = longitude;
return center;
}
}
运行结果:
就这么多,希望能够给小伙伴们有帮助,写的不好以后继续努力
下面是简单的实现,希望对各位有帮助
首先是storyboard
右边蓝色view继承MKMapView。
具体实现:
ViewController.swift
import UIKit
import MapKit
class ViewController:
UIViewController {
var mapData:CLLocationCoordinate2D =
CLLocationCoordinate2D(latitude: 0, longitude:
0)
@IBOutlet weak
var textSearch: UITextField!
@IBAction func submitClicked(sender:
UIButton) {
mapData=MapHelper.geoCodeUsingAddress(textSearch.text)
self.performSegueWithIdentifier("showMap", sender:
self)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//界面跳转传值
override func prepareForSegue(segue:
UIStoryboardSegue, sender:
AnyObject?) {
if segue.identifier ==
"showMap" {
if let a = segue.destinationViewController
as? mapKitViewController {
a.city=textSearch.text
a.latitude=mapData.latitude
a.longitude=mapData.longitude
}
}
}
}
mapKitViewController.swift放置地图的界面
import UIKit
import MapKit
class mapKitViewController:
UIViewController , MKMapViewDelegate{
var city=String()
var latitude=Double()
var longitude=Double()
@IBOutlet var mapview:
MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let location=CLLocationCoordinate2D(latitude:
latitude, longitude:
longitude)
let span=MKCoordinateSpanMake(1,
1) //可以改变地图显示的比例
let region=MKCoordinateRegion(center: location, span: span)
mapview.setRegion(region, animated:
true)
let annotation = MKPointAnnotation()
annotation.coordinate=location
annotation.title=city
annotation.subtitle="China"
mapview.addAnnotation(annotation)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
MapHelper.swift 根据城市明获取城市经纬度
import Foundation
import MapKit
class MapHelper{
static func geoCodeUsingAddress(address:String) ->CLLocationCoordinate2D{
var latitude = 0.0
var longitude = 0.0
let esc_addr = address
let req =
"http://maps.google.cn/maps/api/geocode/json?sensor=false&address=\(address)"
let result:NSString? =
NSString(contentsOfURL:
NSURL(string: req)!, encoding: NSUTF8StringEncoding, error:
nil)
if let value=result{
let scanner:NSScanner =
NSScanner(string: value
as String)
if(scanner.scanUpToString("\"location\" :", intoString:
nil) && scanner.scanString("\"location\" :", intoString:
nil)){
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 =
CLLocationCoordinate2D(latitude:
0, longitude: 0);
center.latitude = latitude;
center.longitude = longitude;
return center;
}
}
运行结果:
就这么多,希望能够给小伙伴们有帮助,写的不好以后继续努力
相关文章推荐
- PhoneGap入门 iOS 插件开发
- IOS(数据持久化1)
- IOS-lazyload思想
- ios测试框架的理解
- IOS--JSON数据解析成字典
- iOS多线程(Grand Central Dispatch)
- OC与iOS开发
- iOS项目代码行数统计
- IOS流媒体播放
- 自定义iOS7导航栏返回按钮文字
- IOS将异常输出到日志
- Aufree/trip-to-iOS
- IOS 编码规范建议
- iOS 四种加密方法
- nsstring ==
- iOS开发之如何配置cocoaPods
- iOS 关于图片地理位置隐私信息的分析和读取
- [iOS开发] tableView经常使用的到方法
- iOS 9 分屏多任务(3):画中画(PiP)快速入门
- iOS开发_Tips(2)