如何使用图钉(或其他标记)保存用户位置并将其显示在地图上?

时间:2015-07-12 01:11:38

标签: swift gps xcode6 mapkit core-location

我想要做的是有一个按钮,用户可以点击它来保存他们当前的位置。然后,在地图上,引脚将出现在保存位置所在的位置。我该怎么做呢?我已经搜索了一些示例代码,但我找不到任何工作或者在Swift中。

我拥有它,因此用户也可以随时查看他们所处的位置。贝娄是我目前的代码。

import UIKit
import CoreLocation
import MapKit


class ViewController: UIViewController, CLLocationManagerDelegate {

var locationManager = CLLocationManager()


@IBOutlet var Map: MKMapView!



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    locationManager.delegate = self
    locationManager.requestWhenInUseAuthorization()
    locationManager.startUpdatingLocation()


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) {

    println("Updating Location \(newLocation.coordinate.latitude) , \(newLocation.coordinate.longitude) ")





    let span = MKCoordinateSpanMake(0.0009, 0.0009)
    let region = MKCoordinateRegion(center: newLocation.coordinate, span: span)
    Map.setRegion(region, animated: false)
}
}

我将在此代码中添加什么来实现我在第一段中描述的目标?

3 个答案:

答案 0 :(得分:1)

好问题!

尝试在A B C D E F G ... UniqueID NameAdj Season SeasonPts Pos PosRank_RB PosRank_QB ... 1 Corey Dillon 1997 198.8 RB 2 Jerry Butler 1979 108.7 WR 3 Earl Campbell 1978 227.8 RB 4 Bo Jackson 1987 105.0 RB 发生时添加存储=COUNTIFS($c:$c,$c2,$e:$e,$e2,$d:$d,">"&$d2)+COUNTIFS($c$2:$c2,$c2,$e$2:$e2,$e2,$d$2:$d2,$d2) 的数组。然后,您可以使用此示例代码设置引脚作为示例:

newLocation.coordinate

但是只需将IBAction设置为存储在数组中的值。

答案 1 :(得分:1)

试试这样:

  • 将您的按钮操作设置为findUserLocationAndDropPin()
  • 使用捕获userLocationCoordinates CLLocationCoordinate2DMake();
  • 使用pinForUserLocation;
  • 创建MKPointAnnotation()
  • 指定您的pinForUserLocation.coordinate等于 userLocationCoordinates;
  • 获取mapViewaddAnnotation;
  • 最后询问mapViewshowAnnotations

这段代码是我的意思,应该这样做,至少在iOS 8.4之前:

@IBAction func findUserLocationAndDropPin(sender: UIButton) {
        var userLocationCoordinates = CLLocationCoordinate2DMake(locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude)
        var pinForUserLocation = MKPointAnnotation()
        pinForUserLocation.coordinate = userLocationCoordinates
        mapView.addAnnotation(pinForUserLocation)
        mapView.showAnnotations([pinForUserLocation], animated: true)
    }

答案 2 :(得分:0)

好的,首先你要获得用户的许可:

  • 添加CoreLocation框架
  • 通过添加NSLocationWhenInUseUsageDescription
  • 更新info.plist
  • 您在viewDidLoad中的代码是否正确
  • 您可以使用更简单的方法:

    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { }
    
  • 在其中,设置:

    var userLocation : CLLocation = locations[0] as! CLLocation

  • 现在使用CLLocationCoordinate2DuserLocation.latitude

  • 创建.longitude
  • 使用MKPointAnnotation()创建注释,并将annotation.coordinate设置为上面的CLLocationCoordinate2D

  • 如果需要,设置.title

  • map.addAnnotation(annotation)

这实际上会在每次更新用户位置时添加一个引脚 - 因此您可能需要考虑删除以前的引脚。此外,如果您每半秒钟左右获得一次更新,那么效果不是很好,所以请考虑将mapView设置为每次更新时显示区域,而不是一个别针。

希望这有帮助!