/ / navigáljon az alma térképeken - ios, swift, mapkit, cllocationmanager, cllocation

tájékozódjon az alma térképeken - ios, swift, mapkit, cllocationmanager, költözés

Megkértem, hogy tegyek egy gombot az alma térképemre, amely az aktuális helyhez hasonlóan animálódik, mint a google térképek alapértelmezett gombja.

Próbáltam végrehajtani, de közel tíz másodpercet vesz igénybe, mielőtt az animáció megtörténne, és szükségem van rá, hogy azonnal legyen.

Saját kísérletem: A CLLocationMangerDelegate az osztály definíciómban van.

class Register2Controller: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate,MKMapViewDelegate, CLLocationManagerDelegate, FBSDKSharingDelegate

Meghatároztam a locManager-et:

var locManager : CLLocationManager!

A helyfrissítésekhez a következőt kapom:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println("in the update location")
if (firstRetrieved){
println("inside first retrieved")
var locValue : CLLocationCoordinate2D = manager.location.coordinate
let span2 = MKCoordinateSpanMake(1, 1)
let long = locValue.longitude
let lat = locValue.latitude
println("in firstRetrieved function with (lat) and (long)")
let loadlocation = CLLocationCoordinate2D(
latitude: lat, longitude: long
)
mapView.centerCoordinate = loadlocation
var latitude:CLLocationDegrees = loadlocation.latitude
var longitude: CLLocationDegrees = loadlocation.longitude
var latDelta:CLLocationDegrees = 0.5
var longDelta:CLLocationDegrees = 0.5

var theSpan:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
var curLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
var theRegion:MKCoordinateRegion = MKCoordinateRegionMake(curLocation, theSpan)
self.mapView.setRegion(theRegion, animated: true)
if !curBtnBool {
// I check curBtnBool to check if the user is in this function  from pressing the button to retrieve curLoc
println("added a pin")
addPin(loadlocation)
}
else{
println("set curBtnBool to be false")
curBtnBool = false
}

firstRetrieved = false
}


}

És ez az én gomb akcióm, amellyel megpróbálom animálni a térképet a curPosition-re:

@IBAction func goToCurPos(sender: UIButton) {
if curLocAccess {
println("in the go to cur pos btn")
firstRetrieved = true
curBtnBool = true
locManager.startUpdatingLocation()
}
else{
println("handle if location permission denied")
}

}

válaszok:

1 a válasz № 1

Első megoldás:

Először is van egy előre elkészített felhasználói nyomkövető sáv gomb, amelyet hozzáadhat a UIToolbar.

let userTrackingButton = MKUserTrackingBarButtonItem(mapView:self.mapView)

self.toolbar.setItems([userTrackingButton])

Ez a gomb pontosan úgy viselkedik, mint a Térkép alkalmazásban.

Második megoldás:

Ha saját gombját kell használni, javaslom, hogy változtassa meg a logikáját.

  1. Indítsa el a felhasználó helyének nyomon követését az MKMapView-ról

self.mapView.setUserTrackingMode(MKUserTrackingMode.Follow, animated: true) // this will center on the user automatically.

  1. Tovább goToCurPos gombot, a térképnézetet az aktuális felhasználó köré helyezze középre.

    Használja azt a kódot, amelyet már a felhasználónak kell középre helyeznie.


0 a válasz № 2

A felhasználó aktuális helyét a következővel kaphatja meg: mapView.userLocation.

Kérjük, próbálja meg ezt a kódot

@IBAction func goToCurPos(sender: UIButton) {
mapView.setCenterCoordinate(mapView.userLocation.location.coordinate, animated: true)
}

Kapcsolódó kérdések


Hozzászólások (0)

Hozzászólni