IOS MapKit 输入城市名获取经纬度显示地图

最近接触到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;   

    }

}

运行结果:

就这么多,希望能够给小伙伴们有帮助,写的不好以后继续努力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值