MKPointAnnotations 快速触摸事件

2023-11-25

我想知道是否有人可以告诉我如何触摸map形式为MKPointAnnotations .

我想点击pin on the map并通过返回来转到另一个视图variables of the pin我已经预设了。

谁能向我解释一下这件事Swift ?

thanks

用代码编辑:

class ViewController: UIViewController, MKMapViewDelegate {


@IBOutlet weak var mappa: MKMapView!


override func viewDidLoad() {
    super.viewDidLoad()

    var location : CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 44.648590, longitude: 10.918794)

    let pinAnnotation = PinAnnotation()
    pinAnnotation.setCoordinate(location)

    self.mappa.addAnnotation(pinAnnotation)

}

class PinAnnotation : NSObject, MKAnnotation {
    private var coord: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0, longitude: 0)

    var coordinate: CLLocationCoordinate2D {
        get {
            return coord
        }
    }

    var title: String = "test"
    var subtitle: String = "test"

    func setCoordinate(newCoordinate: CLLocationCoordinate2D) {
        self.coord = newCoordinate
    }        
}

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
    if annotation is PinAnnotation {
        let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myPin")

        pinAnnotationView.pinColor = .Purple
        pinAnnotationView.draggable = true
        pinAnnotationView.canShowCallout = true
        pinAnnotationView.animatesDrop = true

        let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
        deleteButton.frame.size.width = 44
        deleteButton.frame.size.height = 44
        deleteButton.backgroundColor = UIColor.redColor()
        deleteButton.setImage(UIImage(named: "trash"), forState: .Normal)

        pinAnnotationView.leftCalloutAccessoryView = deleteButton


        return pinAnnotationView
    }

    return nil
}

func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
    if let annotation = view.annotation as? PinAnnotation {
        self.mapView.removeAnnotation(annotation)
    }
}
}

需要执行几个步骤,这里有一些代码片段可以帮助您入门。

首先,您需要一个用于引脚注释的自定义类,其中包含您要使用的数据。

import MapKit
import Foundation
import UIKit

class PinAnnotation : NSObject, MKAnnotation {
    private var coord: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0, longitude: 0)
    private var _title: String = String("")
    private var _subtitle: String = String("")

    var coordinate: CLLocationCoordinate2D {
        get {
            return coord
        }
    }

    func setCoordinate(newCoordinate: CLLocationCoordinate2D) {
        self.coord = newCoordinate
    }   

     var title: String? {
        get {
            return _title
        }
        set (value) {
            self._title = value!
        }
    }

    var subtitle: String? {
        get {
            return _subtitle
        }
        set (value) {
            self._subtitle = value!
        }
    } 
}

然后你需要一个自定义类MKMapView其符合MKMapViewDelegate协议。实施该方法viewForAnnotation there:

import MapKit
import CLLocation
import Foundation
import UIKit

class MapViewController: UIViewController, MKMapViewDelegate {

    ...

    func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
        if annotation is PinAnnotation {
            let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myPin")

            pinAnnotationView.pinColor = .Purple
            pinAnnotationView.draggable = true
            pinAnnotationView.canShowCallout = true
            pinAnnotationView.animatesDrop = true

            let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
            deleteButton.frame.size.width = 44
            deleteButton.frame.size.height = 44
            deleteButton.backgroundColor = UIColor.redColor()
            deleteButton.setImage(UIImage(named: "trash"), forState: .Normal)

            pinAnnotationView.leftCalloutAccessoryView = deleteButton

            return pinAnnotationView
        }

        return nil
    }

    func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
        if let annotation = view.annotation as? PinAnnotation {
            mapView.removeAnnotation(annotation)
        }
    }

这给了你这样的东西:

enter image description here

要向地图添加新注释,请在代码中的某个位置使用此注释:

let pinAnnotation = PinAnnotation()
pinAnnotation.setCoordinate(location)

mapView.addAnnotation(pinAnnotation)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MKPointAnnotations 快速触摸事件 的相关文章

  • 如何在 X 秒后更改 NSTimer 的 NSTimeInterval?

    我正在 swift 2 中制作一个应用程序 其中有两个计时器 10 秒后我希望另一个计时器走得更快 我尝试过这样做 但它不起作用 我正在尝试更改 vartime to 1 IBOutlet var displayTimeLabel UILa
  • 如何调用进行 API 调用的类的实例以及该类中发出请求的函数,并将其分配给变量?迅速

    这是以下问题的后续 为什么代码不在第二个 URLSession shared dataTask 之后 之内执行 即在初始 URLSession shared dataTask 的 do 块内 迅速 https stackoverflow c
  • 在 Swift 中使用 UIActivityIndi​​catorView 和 UIWebView

    当 url 加载到 WebView 中时 我试图在我的应用程序中向用户显示活动指示器视图 我尝试过使用 Activity startAnimating activity stopAnimating 并尝试将它们放入函数等中 但没有任何运气
  • 如何缩放 CAShapeLayer

    我很快就成功制作了动画bezier path它包含在一个CAShapeLayer 我唯一的问题是将其实现到其他屏幕尺寸上 有谁知道我如何扩展CAShapeLayer里面有路径吗 即使其变为原始大小的一半 使用这个函数 var shapela
  • NSMenu 未调用 validateMenuItem 或 menuWillOpen

    我的 Mac 应用程序有一个 NSMenu 其委托功能validateMenuItem and menuWillOpen从来没有被调用过 到目前为止 网上的解决方案都没有帮助 看来我做的一切都是对的 菜单项的选择器属于同一类 管理它的类继承
  • Swift 中符合协议的泛型类型

    是否可以要求泛型类型的特定实例符合 Swift 中的协议 例如 假设我有一个名为的泛型类型Thing
  • 如何在 Swift Joint 中创建自定义链?

    我正在尝试创建一个LocationManager组合的包装 我有一个发布者和一些触发发布者的函数 但是 我想将它们与自定义命令组合在一起 这是我到目前为止得到的 available OSX 10 15 iOS 13 tvOS 13 watc
  • iOS 9.3.2 破坏 MPMusicPlayerController

    我正在尝试将 Apple Music 集成到我的应用程序中 直到今天早上我才设法使其完美运行 更新到 iOS 9 3 2 后 一切都不一样了 权限系统的工作原理相同 SK云服务控制器 https developer apple com li
  • swift 中 pch 的替代品是什么?

    我想知道可以用什么来代替 swift 中的 pch 有没有 pch 的替代方案或方法可以快速摆脱导入 这样我们就不需要对所有类都这样做 我不想一直随身携带 进口 swift 中 pch 的最佳替代品是什么 您无法在 swift 中定义 宏
  • xcode 错误:...此类与键 ibShadowedLargeTitleTextAttributes 的键值编码不兼容

    我不断收到此错误 在我使用颜色集之前 该应用程序就可以运行 该错误说明了一些有关ibShadowedLargeTitleTextAttributes 我没有为大标题阴影设置任何颜色 我使用默认值 透明 我重新启动了 Xcode 使用了阴影颜
  • 为级联子列表构建一个空的 MVC DropdownListFor

    我想构建一个空的下拉列表来接收先前下拉列表选择的结果 实际视图 div Html DropDownListFor m gt m Make Id Model MakeList HeelpResources DropdownlistMakeFi
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let
  • Swift try inside Objective-C 块

    我需要创建一个函数foo它接受一个抛出闭包作为参数 我可以使用 Swift 或 ObjC 来实现它 但我需要能够从两者中调用它 像这样 Swift func bar throws func foo block throws gt void
  • 在 macOS 上使用 Swift 3 从剪贴板读取

    我是 Swift 的初学者 我想弄清楚如何在 macOS Swift 3 上读取已复制到剪贴板的内容 我搜索了很多 但似乎找不到任何有效的东西 我从网上尝试过的一些事情 var pasteboardItems NSPasteboardIte
  • Swift 中计算只读属性与函数

    在 Swift WWDC 简介会话中 只读属性description被证明 class Vehicle var numberOfWheels 0 var description String return numberOfWheels wh
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • Swift PageControl 当前页面上更大的点

    我试图将当前页面的点缩放为大于未 选择 的点 我正在使用滚动视图委托来确定哪个页面是当前的 目前 点的大小没有变化 我将如何实现这一目标 func scrollViewDidEndDecelerating scrollView UIScro
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • Swift 单元测试 - 如何断言 CGColor 是它应该的样子?

    使用 Xcode V7 2 尝试进行单元测试 需要验证是否已设置正确的颜色 并收到以下消息 Cannot invoke XCTAssertEqual with an argument list of type CGColor CGColor
  • 如何在 SwiftUI 中延迟动画?

    我想为两个文本字段设置动画 第二个字段有延迟 但它不起作用 没有延迟 它们同时从位置 100 动画到 0 这是代码 State private var offset CGFloat 100 State private var offset2

随机推荐

  • 交互式输入标题,并使用捕获在其下放置条目

    使用如下所示的捕获模板 我可以将条目添加到文件中的不同标题中 如何在捕获期间手动输入标题 而不是像我现在所做的那样将每个标题设置为 emacs 文件中的一个键 setq org capture templates l Log entry f
  • 有没有办法将 matplotlib 图旋转 45 度?

    我正在寻找一种方法 将 matplotlib pyplot Python 库 中生成的绘图旋转 45 度 例如 这样您就可以得到菱形而不是正方形 有人知道这是否可以做到吗 我能想到的一种方法是对所有数据使用旋转过滤器 使其看起来旋转 但绘图
  • 列表视图中的单选按钮

    我在列表视图格式中显示刺痛列表 我使用默认列表视图并使用放置了一个单选按钮simple list item single choice 但这在右侧显示了单选按钮 我想在左侧显示单选按钮 是否可以使用默认列表视图在左侧显示单选按钮 simpl
  • 实现Hadoop的Writable接口的枚举值

    假设我有一个枚举 public enum SomeEnumType implements Writable A 0 B 1 private int value private SomeEnumType int value this valu
  • selectedIndex 在回发期间丢失 - ASP.NET

    我有一个列表框控件
  • iOS 在提交应用程序之前链接到应用程序商店

    我正在为我的 iPhone 应用程序构建一个 关于 控制器 我看到其他应用程序成功地将 市场价格 链接包含在其 关于 控制器中 我是否可以预测我的链接是什么 以便我可以在应用程序的第一个版本中对其进行硬编码 而不是上传 找出链接 发布更新
  • 元刷新重定向到顶部框架

    我有以下代码 Body of this page 这是行不通的 我用谷歌搜索了这个并得出了相同的结论 这应该有效 但事实并非如此 任何人都可以帮我解决
  • 如何在 Rails 中构建由多个模型组成的 JSON 响应

    一 想要的结果 I have User and Item楷模 我想构建一个如下所示的 JSON 响应 user username Bob foo whatever bar hello items id 1 name one zim plan
  • 在 JavaScript 中加入 2 个“线程”

    如果我有一个 ajax 调用关闭获取 通过回调 然后同时运行一些其他代码 当前两个函数完成后 我怎样才能有第三个函数被调用 我确信轮询很容易 setTimeout 然后检查一些变量 但我宁愿回调 是否可以 您可以为 AJAX 调用和同时运行
  • 你能将冒泡排序表述为幺半群或半群吗?

    给出以下冒泡排序的伪代码 procedure bubbleSort A list of sortable items repeat swapped false for i 1 to length A 1 inclusive do if th
  • OutputCache VaryByCustom cookie 值

    有没有办法根据 cookie 值设置 OutputCache 的值 为了简单起见 这是我的方法 OutputCache Duration 600 VaryByParam None VaryByCustom ztest public View
  • std::call_once 是阻塞调用吗?

    我在用着std call once在我的代码中仅初始化一些共享变量一次 调用代码位于由多个线程触发的回调内 我有兴趣知道 因为我在文档中找不到它是否std call once本质上是阻塞的 就好像有一个std lock guard反而 实际
  • 根据TextWrapping属性获取TextBlock的行数?

    我有一个TextBlock在WPF应用程序中 The Text Width Height TextWrapping FontSize FontWeight FontFamily 这个的属性TextBlock是动态的 由用户在运行时输入 每次
  • fetch() 输入意外结束

    我正在使用 fetch 从 api 服务器获取数据 我的错误看起来像这样 Uncaught in promise SyntaxError Unexpected end of input at fetch then blob 你能告诉我我做错
  • 在 if...else 语句中嵌入 case 标签

    G 接受这段代码 它的行为正如我所期望的那样 include
  • 给定一个代表某个值频率的 pandas 系列,我如何将这些频率转换为百分比?

    我正在尝试 kaggle com 泰坦尼克号数据集 泰坦尼克号上每个人的数据 并得出如下性别细分 df pd DataFrame sex male 577 female 314 gender df sex value counts gend
  • 在 ASP.NET MVC 2 中将视图呈现为字符串

    我们需要渲染一个ActionResult to a string将页面添加到我们的内部搜索引擎索引中 我们决定这个解决方案渲染为字符串 我遇到了一个问题ExecuteResult用于处理视图的调用 代码片段 var oldControlle
  • 将文本文件作为 clob 加载到数据库

    将文本文件作为 clob 加载到数据库时出现问题 Oracle 版本 Oracle Database 11g EE 版本 11 2 0 2 0 NLS LANG RUSSIAN RUSSIA CL8MSWIN1251 NLS CHARACT
  • 匿名类型的 IQueryable

    我使用 EntityFramework 使用匿名类型查询和返回部分数据 目前我正在使用IQueryable
  • MKPointAnnotations 快速触摸事件

    我想知道是否有人可以告诉我如何触摸map形式为MKPointAnnotations 我想点击pin on the map并通过返回来转到另一个视图variables of the pin我已经预设了 谁能向我解释一下这件事Swift tha