Swift - 使用MapKit显示地图,并在地图上做标记
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import UIKitimport MapKitimport CoreLocationclass ViewController: UIViewController { var mainMapView: MKMapView! //定位管理器 let locationManager:CLLocationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() //使用代码创建 self.mainMapView = MKMapView(frame:self.view.frame) self.view.addSubview(self.mainMapView) //地图类型设置 - 标准地图 self.mainMapView.mapType = MKMapType.Standard //创建一个MKCoordinateSpan对象,设置地图的范围(越小越精确) var latDelta = 0.05 var longDelta = 0.05 var currentLocationSpan:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta) //定义地图区域和中心坐标( //使用当前位置 //var center:CLLocation = locationManager.location.coordinate //使用自定义位置 var center:CLLocation = CLLocation(latitude: 32.029171, longitude: 118.788231) var currentRegion:MKCoordinateRegion = MKCoordinateRegion(center: center.coordinate, span: currentLocationSpan) //设置显示区域 self.mainMapView.setRegion(currentRegion, animated: true) //创建一个大头针对象 var objectAnnotation = MKPointAnnotation() //设置大头针的显示位置 objectAnnotation.coordinate = CLLocation(latitude: 32.029171, longitude: 118.788231).coordinate //设置点击大头针之后显示的标题 objectAnnotation.title = "南京夫子庙" //设置点击大头针之后显示的描述 objectAnnotation.subtitle = "南京市秦淮区秦淮河北岸中华路" //添加大头针 self.mainMapView.addAnnotation(objectAnnotation) }} |
5,标记样式的修改
默认标记是一个红色的大头针。通过MKMapViewDelegate代理,我们可以自定义大头针的样式,以及点击注释视图右侧按钮样式等。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import UIKitimport MapKitimport CoreLocationclass ViewController: UIViewController, MKMapViewDelegate { var mainMapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() //使用代码创建 self.mainMapView = MKMapView(frame:self.view.frame) self.view.addSubview(self.mainMapView) self.mainMapView.delegate = self } //自定义大头针样式 func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if annotation is MKUserLocation { return nil } let reuserId = "pin" var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuserId) as? MKPinAnnotationView if pinView == nil { //创建一个大头针视图 pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuserId) pinView?.canShowCallout = true pinView?.animatesDrop = true //设置大头针颜色 pinView?.pinColor = MKPinAnnotationColor.Green //设置大头针点击注释视图的右侧按钮样式 pinView?.rightCalloutAccessoryView = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as! UIButton }else{ pinView?.annotation = annotation } return pinView }} |
6,地图代理 - MKMapViewDelegate中所有代理方法
MKMapViewDelegate除了可以设置大头针样式,注释视图点击响应等。还可以在地图相关事件发生时(比如缩放,地图加载,位置跟踪等),触发相应的方法。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
import UIKitimport MapKitimport CoreLocationclass ViewController: UIViewController, MKMapViewDelegate { var mainMapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() //使用代码创建 self.mainMapView = MKMapView(frame:self.view.frame) self.view.addSubview(self.mainMapView) self.mainMapView.delegate = self } func mapView(mapView: MKMapView!, regionWillChangeAnimated animated: Bool) { println("地图缩放级别发送改变时") } func mapView(mapView: MKMapView!, regionDidChangeAnimated animated: Bool) { println("地图缩放完毕触法") } func mapViewWillStartLoadingMap(mapView: MKMapView!) { println("开始加载地图") } func mapViewDidFinishLoadingMap(mapView: MKMapView!) { println("地图加载结束") } func mapViewDidFailLoadingMap(mapView: MKMapView!, withError error: NSError!) { println("地图加载失败") } func mapViewWillStartRenderingMap(mapView: MKMapView!) { println("开始渲染下载的地图块") } func mapViewDidFinishRenderingMap(mapView: MKMapView!, fullyRendered: Bool) { println("渲染下载的地图结束时调用") } func mapViewWillStartLocatingUser(mapView: MKMapView!) { println("正在跟踪用户的位置") } func mapViewDidStopLocatingUser(mapView: MKMapView!) { println("停止跟踪用户的位置") } func mapView(mapView: MKMapView!, didUpdateUserLocation userLocation: MKUserLocation!) { println("更新用户的位置") } func mapView(mapView: MKMapView!, didFailToLocateUserWithError error: NSError!) { println("跟踪用户的位置失败") } func mapView(mapView: MKMapView!, didChangeUserTrackingMode mode: MKUserTrackingMode, animated: Bool) { println("改变UserTrackingMode") } func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { println("设置overlay的渲染") return nil } func mapView(mapView: MKMapView!, didAddOverlayRenderers renderers: [AnyObject]!) { println("地图上加了overlayRenderers后调用") } /*** 下面是大头针标注相关 *****/ func mapView(mapView: MKMapView!, didAddAnnotationViews views: [AnyObject]!) { println("添加注释视图") } func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) { println("点击注释视图按钮") } func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) { println("点击大头针注释视图") } func mapView(mapView: MKMapView!, didDeselectAnnotationView view: MKAnnotationView!) { println("取消点击大头针注释视图") } func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, didChangeDragState newState: MKAnnotationViewDragState, fromOldState oldState: MKAnnotationViewDragState) { println("移动annotation位置时调用") }} |
Swift - 使用MapKit显示地图,并在地图上做标记的更多相关文章
- 百度地图api根据地图缩放等级显示不同的marker点,功能二
功能一里面有marker点后台的代码 根据地图的缩放等级显示不同marker点的坐标JSP代码 <%@ page language="java" contentType=&q ...
- 创建一个ArcGIS for Android 新项目并显示出本地的地图
1.准备工作:首先要配置好android的开发环境,然后在Eclipse中安装ArcGIS for Android的开发控件:在ArcCatalog中发布好本地的地图服务. 2.安装完ArcGIS f ...
- 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图.谷歌中国中文地图. 最近正好有点业余时间,所以在做做各种地图.Bing Map控件本身就能显示必应地图,但是很遗憾微软 ...
- 从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理
从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理 作者:naaoveGI… 文章来源:naaoveGIS 点击数:1145 更新时间: ...
- ios 一步一步学会自定义地图吹出框(CalloutView)-->(百度地图,高德地图,google地图)
前言 在 ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的 google地图,只提供了这四个属性,如果想 ...
- Android地图开发之地图的选择
做lbs开发差不多快2年了,地图相关的产品也差不多做了3个了,用到过的地图包括google地图.高德地图.百度地图.图吧.Osmdroid,今天总结下,方便大家开发时选择合适的地图. 首先说定位模块选 ...
- js调用百度地图API创建地图,搜索位置
实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...
- 关于百度地图API的地图坐标转换问题
原文:关于百度地图API的地图坐标转换问题 我在之前的文章利用html5获取经纬度并且在百度地图中显示位置中使用了百度地图的API来显示html5获取的地理位置,在文中我说过这样的话,我说百度地图的准 ...
- 网页嵌入百度地图和使用百度地图api自定义地图的详细步骤
在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/ ...
随机推荐
- 动态规划 最长公共子序列 LCS,最长单独递增子序列,最长公共子串
LCS:给出两个序列S1和S2,求出的这两个序列的最大公共部分S3就是就是S1和S2的最长公共子序列了.公共部分 必须是以相同的顺序出现,但是不必要是连续的. 选出最长公共子序列.对于长度为n的序列, ...
- android面试题之一
在接下来的一段时间,我将收集一些常见面试题,综合网上资料加自己测试与理解,将其总结出来和大家分享,里面难免有一些问题,希望大家提出宝贵意见以便及时更正. 一.Activity.Service.Broa ...
- C++数据结构之图
图的实现是一件很麻烦的事情,很多同学可能在学数据结构时只是理解了图的基本操作和遍历原理,但并没有动手实践过.在此,我说说我的实现过程. 首先,在草稿纸上画一个图表,这里是有向图,无向图也一样,如下: ...
- C - Virtual Friends
网上搜了,好多c++里的东西啊 有思路不会做,真烦,还是好好学c++: 先把题和代码粘过来,过几天学c++好了再看 http://acm.hust.edu.cn/vjudge/contest/view ...
- CoinChange
题目 题目:CoinChange 有面额不等的coins,数量无限,要求以最少的\(coins\)凑齐所需要的\(amount\). 若能,返回所需的最少coins的数量,若不能,返回-1. Exam ...
- windows desktop.ini
win7桌面上的两个desktop.ini文件千万不要删除,win7系统里的desktop.ini文件是有用的. 详解 Desktop.ini 配置设置文件1 http://blog.sina.com ...
- PHP学习笔记3-逻辑运算符
逻辑运算符图解: 逻辑且&&: <?php /** * Created by PhpStorm. * User: Administrator * Date: 2015/6/26 ...
- 2014 HDU多校弟五场A题 【归并排序求逆序对】
这题是2Y,第一次WA贡献给了没有long long 的答案QAQ 题意不难理解,解题方法不难. 先用归并排序求出原串中逆序对的个数然后拿来减去k即可,如果答案小于0,则取0 学习了归并排序求逆序对的 ...
- Flask web开发 简单介绍
Flask是一个基于python的轻量级web框架.当安装好后Flask后 (pip install flask),就可以开始使用了. 一.最简单的例子 1.新建目录,作为web应用的目录,如: mk ...
- Android学习笔记:ListView简单应用--显示文字列表
在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例 ...