iOS 入门 —— MapKit Basics

本文介绍如何在Swift中使用MapKit和UIPickerView实现地图位置切换功能。通过构建城市类并利用pickerView选择城市,可以快速更改地图显示的地点;同时通过SegmentedControl实现标准和卫星模式的地图显示。

更新,,,
今天,学习了view中的MapKit,实现了基本的地图工具调用。

Functions 功能

  • pickerView 实现滚动选择地点
  • 每一个pickerView中的item有一个对应的经纬坐标
  • 选到一个地点,上方的地图即切换到相应的位置
  • 地图使用 SegmentedControl 实现显示模式切换

    • standard,标准模式
    • satellite,卫星模式

Implements 具体实现

storyBoard

- 按照之前所学,我们知道,要在右下角选择界面组件,这里我们搜索map.
- 选择Map Kit View,拖入主界面
- 找到SegmentedControl拖入界面,两个值分别改为Standard 和 Satellite 
- 找到pickerView 拖入界面
完成图如下:

clipboard.png

ViewController

- 首先对pickerView初始化,将pickerView 中的每个元素设为城市名
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return cityList.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return cityList[row].name
    }
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let selectedCity = cityList[row]
        let lat = selectedCity.lat
        let long = selectedCity.long
        let span = MKCoordinateSpanMake(0.075, 0.075)
        let region = MKCoordinateRegion(center: CLLocationCoordinate2DMake(lat, long), span: span)
        myMap.setRegion(region, animated: true)
    }
- 创建城市类,这里使用swift里的struct
import Foundation

struct city {
    var name: String
    var lat: Double
    var long: Double
    
- 然后,我们需要见一个链表来存储城市, 这里新建4个;
- 新建城市对象以及城市的属性,插入链表
var cityList = [city]()
    
    func loadCity() {
        let shanghai = city(name: "Shanghai", lat: 31.2304, long: 121.4737)
        let LA = city(name: "Los Angeles", lat: 34.0522, long: -118.2437)
        let NY = city(name: "New York", lat: 40.7128, long: -74.0059)
        let Beijing = city(name: "Beijing", lat: 39.9042, long: 116.4074)
        // append cities into list
        cityList.append(shanghai)
        cityList.append(LA)
        cityList.append(NY)
        cityList.append(Beijing)
        
    }
- 再对segmentControl设定方法
@IBAction func changeMapView(_ sender: Any) {
        switch mapType.selectedSegmentIndex {
        case 0:
            myMap.mapType = MKMapType.standard
        case 1:
            myMap.mapType = MKMapType.satellite
        default:
            myMap.mapType = MKMapType.standard
        }
    }

好,现在来测试

[image:835C8A90-C849-429E-BB8C-560E2B216962-15699-0000EB0EF90D9A34/Screen Shot 2017-09-17 at 19.32.11.png]

这是洛杉矶的standard地图,

clipboard.png

这是北京的satellite地图 ^_^

这就完成了简单的功能demo,后续,还可以加更多城市,甚至连接数据库,搜索出全球的城市,并定位该地得到地图。

Reference

App school for Xcode and iOS 10 Development Free

                                                
                    Copyright © 2017 zhiwei xu. All rights reserved.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值