2016-08-01 5 views
0

Ich möchte den aktuellen Standort des Benutzers mit dem anderen Standort abgleichen, unabhängig davon, ob sie identisch sind oder nicht.Wie Benutzer aktuellen Standort abrufen und einige andere Koordinaten sind gleich oder nicht?

Meine Logik:

  point.coordinate = coordinate 
      let userLat = mapView.userLocation?.coordinate.latitude 
      let userLong = mapView.userLocation?.coordinate.longitude 
      if point.coordinate.latitude == userLat && point.coordinate.longitude == userLong 
      { 
      point.title = "You are here" 

      } 
      else 
      { 
      point.title = "\(coordinate.latitude), \(coordinate.longitude)" 
      } 

Aber das Probelm ist, dass mapView.userLocation?.coordinate.latitude nicht gleich point.coordinate.latitude ist. Allerdings setze ich den gleichen Wert für userLocation im Simulator und anderen Koordinaten.

Wert I für User Location bin Einstellung ist: Lat: 28.6 Long: 77,35

Wert I für andere Koordinate bin Einstellung ist: Lat: 28.6 Long: 77,35

Wert, den ich bekomme für User Location ist: Lat: Optional - Einige: 3.4028234663852886e + 38

Long: ▿ Optional - Einige: 3.4028234663852886e + 38

Wert I für andere Koordinate bin immer ist: Lat: 28.6 Long: 77,35

Und wenn es eine bessere Logik finde dieses Ding heraus, dann sag es mir bitte.

Antwort

2

Ist Ihr Punktobjekt - Objekt der CLLocation-Unterklasse? Wenn nicht, erstellen Sie CLLocation von Ihrer Point.Coordinate und vergleichen Sie wie folgt. Versuchen Sie, diese CLLocation Objekte anstelle von Koordinaten vergleichen, mit diesem Ansatz:

let distanceThreshold: CLLocationDistance = 2.0 // in meters 
if point.distanceFromLocation(mapView.userLocation!) < distanceThreshold { 
point.title = "You are here" 
} else { 
point.title = "\(coordinate.latitude), \(coordinate.longitude)" 
} 

oder Sie können Schwelle auf 0

gesetzt
Verwandte Themen