当前位置: 首页 > 面试题库 >

在Swift中更改MKMapView上的图钉图像

韩良策
2023-03-14
问题内容

我正在尝试在Swift中更改MKMapView上的大头针图像,但不幸的是它不起作用。知道我在做什么错吗?我在这里看到了一些示例,但是没有用。

import UIKit
import MapKit

class AlarmMapViewController: UIViewController {
    @IBOutlet weak var map: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()
        showAlarms()
        map.showsUserLocation = true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func showAlarms(){

        map.region.center.latitude = 49
        map.region.center.longitude = 12
        map.region.span.latitudeDelta = 1
        map.region.span.longitudeDelta = 1

        for alarm in Alarms.sharedInstance.alarms {

            let location = CLLocationCoordinate2D(
                latitude: Double(alarm.latitude),
                longitude: Double(alarm.longtitude)
            )

            let annotation = MKPointAnnotation()
            annotation.setCoordinate(location)
            annotation.title = alarm.name
            annotation.subtitle = alarm.description
            mapView(map, viewForAnnotation: annotation).annotation = annotation
            map.addAnnotation(annotation)
        }
    }

    @IBAction func zoomIn(sender: AnyObject) {
    }

    @IBAction func changeMapType(sender: AnyObject) {
    }

    func mapView(mapView: MKMapView!,
        viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {

        if annotation is MKUserLocation {
            //return nil so map view draws "blue dot" for standard user location
            return nil
        }

        let reuseId = "pin"
        var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
        if pinView == nil {
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView!.canShowCallout = true
            pinView!.animatesDrop = true
            pinView!.image = UIImage(named:"GreenDot")!

        }
        else {
            pinView!.annotation = annotation
        }

        return pinView
    }
}

GreenDot图片可在其他地方使用。


问题答案:

不要忘记设置:

map.delegate = self

并确保您UIViewController实施该MKMapViewDelegate协议。
如果您忘记执行此操作,mapView:viewForAnnotation:则不会为您的地图调用实现。

此外,它看起来像pinView!.animatesDrop = true破坏自定义图像。您必须将其设置为false,或使用MKAnnotationView(没有animatesDrop属性)。



 类似资料:
  • 问题内容: 我正在尝试使用Swift更改UIButton的图像…我该怎么办 这是OBJ-C代码。但是我不知道Swift: 问题答案: 从您的Obc-C代码中,我认为您想为按钮设置图片,因此请尝试以下方式: 简而言之: 对于Swift 3:

  • 问题内容: 我要显示图像而不是小 别针 。 有人可以在这里放置一些有用的代码,或告诉它怎么做吗? 我希望我的图片 pinks.jpg 会显示在地图上,而不是默认的图钉视图( 石头图钉形状 ),而是固定位置。但是我仍然得到该引脚的默认图像。 问题答案: 如果要将自己的图像用于注释视图,则应创建一个,而不是。 是的子类,因此具有属性,但通常会覆盖该属性并绘制图钉图像(这就是它的作用)。 因此,将代码更

  • 问题内容: 我刚刚开始学习Swift。 题: 当我在地图上触摸以放置图钉注释并拖动手指时,它将创建 重复的注释行。 问题答案: Xcode 8.2•Swift 3.0.2 您只需要检查手势识别器的状态,并确定是否可以 。返回。只需在操作方法顶部添加if条件: 如果要允许用户在触摸时移动图钉,则 需要更改手势识别器的状态并在 gestureRecognizer.state更改时更新注释坐标:

  • 图钉能把页面上的某个元素一直固定在那里,页面右侧的导航就是一个活生生的例子。 示例代码 $('.pushpin-demo-nav').each(function() { var $this = $(this); var $target = $('#' + $(this).attr('data-target')); $this.pushpin({ top: $target.o

  • 问题内容: 我正在尝试从Swift 1.2更改为Swift 2.0,而我在更改的最后。目前,我正在MapViewController中进行更改,没有任何错误或警告,但是我的图钉(annotationView)的自定义图像未分配给图钉,并且显示了默认图像(红点)。 这是我的代码,希望您能提供一些帮助,因为我认为一切都很好,但是仍然无法正常工作: 提前致谢, 问候。 问题答案: 接受的答案无效,因为它

  • 基本上,我有一个方法可以将Image从数据库加载到ImageView中,还有第二个方法可以更改图像,我成功地运行了这两个方法,没有出现异常,但是在change eImage()方法中的setImage之后,我需要更新什么以及如何(场景、阶段)是可能的。我知道在javafx中没有像swings中的repaint()这样的方法,那么我该如何处理呢?