我怎样才能添加一个 GPS 导致地图上的别针?

How can I add a GPS that leads to pins on map?

我正在制作一个在地图上显示图钉(用户添加的)并将其保存在 table 视图中的应用程序,我希望在用户点击按钮时让 GPS 引导用户打开 GPS 这样他们就可以到达那个地方,我该怎么做,这是我在 table 视图中的代码:

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell

        cell.textLabel?.text = places[indexPath.row]["name"]

        return cell
    }

    override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {

        activePlace = indexPath.row

        return indexPath

    }

这是我在地图视图中的代码:

func action(gestureRecognizer:UIGestureRecognizer) {

        if gestureRecognizer.state == UIGestureRecognizerState.Began {

            var touchPoint = gestureRecognizer.locationInView(self.Map)

            var newCoordinate = self.Map.convertPoint(touchPoint, toCoordinateFromView: self.Map)

            var location = CLLocation(latitude: newCoordinate.latitude , longitude: newCoordinate.longitude)



            CLGeocoder().reverseGeocodeLocation(location, completionHandler: { (placemarks, error) -> Void in

                var title = ""

                if (error == nil) {



                    if let p = CLPlacemark(placemark: placemarks?[0] as! CLPlacemark) {

                        var subThoroughfare: String = ""
                        var thoroughfare: String = ""

                        if p.subThoroughfare != nil {

                            subThoroughfare = p.subThoroughfare

                        }

                        if p.thoroughfare != nil {

                            thoroughfare = p.thoroughfare
                        }

                        title = "\(subThoroughfare) \(thoroughfare)"

                    }

                }

                if title == "" {

                    title = "added \(NSDate())"
                }

                places.append(["name":title,"lat":"\(newCoordinate.latitude)","lon":"\(newCoordinate.longitude)"])

我一直在尝试使用下面的代码来添加 GPS,但我有一个预定义的目的地,所以我想我必须将坐标更改为其他内容,但我不知道具体是什么,感谢您的帮助!

UIApplication.sharedApplication().openURL(NSURL(string: "http://maps.apple.com/maps?daddr=34.539250,-117.222025")!)

用户位置我也在用这段代码

 func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

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

        var latitude = userLocation.coordinate.latitude
        var longitude = userLocation.coordinate.longitude

        var coordinate = CLLocationCoordinate2DMake(latitude, longitude)

        var latDelta:CLLocationDegrees = 0.01
        var lonDelta:CLLocationDegrees = 0.01

        var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)

        var region:MKCoordinateRegion = MKCoordinateRegionMake(coordinate, span)

        self.Map.setRegion(region, animated: true)

让我们假设您启用了定位功能,因此您只需要保存在 table 中的 "user location" 然后试试这个:

只要传递你的 lang,lat 就可以了 ^^

  func openMapForPlace() {

    var lat1 : NSString = self.venueLat
    var lng1 : NSString = self.venueLng

    var latitute:CLLocationDegrees =  lat1.doubleValue
    var longitute:CLLocationDegrees =  lng1.doubleValue

    let regionDistance:CLLocationDistance = 10000
    var coordinates = CLLocationCoordinate2DMake(latitute, longitute)
    let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
    var options = [
        MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center),
        MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span)
    ]
    var placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil)
    var mapItem = MKMapItem(placemark: placemark)
    mapItem.name = "\(self.venueName)"
    mapItem.openInMapsWithLaunchOptions(options)

}

如有任何问题欢迎随时提问

借用@Mingebag 的回答,回应你在那里的评论: 您需要将他提供的 openMapForPlace() 方法中的变量设置为与您想要在苹果地图应用程序中获取方向的 gps 位置相对应的变量。

无论在何处调用此方法,都可以将所需的变量传递给它。为此,您真的只需要以某种方式给它纬度/经度。 你可以这样做:

func openMapsForPlace(lat: Double, lon: Double) {}

或您拥有的任何格式。

如果您有更好的执行位置,您也可以将这段代码放在任何地方:

let regionDistance:CLLocationDistance = 10000

//set the coordinates with your variables
var coordinates = CLLocationCoordinate2DMake(newCoordinates.latitude, newCoordinates.longitude)
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
var options = [
    MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center),
    MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span)
]

//now your placemark will have the lat long you put in above
var placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) 

var mapItem = MKMapItem(placemark: placemark)
mapItem.name = "\(self.venueName)"

//this line then launches the app for you
mapItem.openInMapsWithLaunchOptions(options)