2017-05-17 2 views
0

Ich verwende Google PlacePicker API in meiner iOS-Anwendung mit Swift 3.0. Ich brauche 13 Nachkommastellen nach dem Komma. Google PlacePicker gibt jedoch den Längen- und Breitengrad mit 7 Nachkommastellen zurück.Google PlacePicker API - Geokoordinaten-Genauigkeit nach dem Komma (Swift 3.0)

Unten ist meine Funktion:

func pickPlace(sender: UIButton) { 
    let center = CLLocationCoordinate2D(latitude: (locationManager.location?.coordinate.latitude)!, longitude: (locationManager.location?.coordinate.longitude)!) 
    let northEast = CLLocationCoordinate2D(latitude: center.latitude + 0.001, longitude: center.longitude + 0.001) 
    let southWest = CLLocationCoordinate2D(latitude: center.latitude - 0.001, longitude: center.longitude - 0.001) 
    let viewport = GMSCoordinateBounds(coordinate: northEast, coordinate: southWest) 
    let config = GMSPlacePickerConfig(viewport: viewport) 
    let placePicker = GMSPlacePicker(config: config) 
    placePicker.pickPlace(callback: {(place, error) -> Void in 
     if let error = error { 
      print("Pick Place error: \(error.localizedDescription)") 
      return 
     } 
     if let place = place { 
      let coordinates = CLLocationCoordinate2DMake(place.coordinate.latitude, place.coordinate.longitude) 
      let marker = GMSMarker(position: coordinates) 
      marker.title = place.name 
      marker.map = self.googleMapView 
      self.googleMapView.animate(toLocation: coordinates) 
      let geoCode = "\(place.coordinate.latitude),\(place.coordinate.longitude)" 
      self.showGeoSelector(title: "Selected Coordinates", message: "Latitude: " + String(place.coordinate.latitude) + " Longitude: " + String(place.coordinate.longitude), geoCode: geoCode, geoLat: String(place.coordinate.latitude), geoLong: String(place.coordinate.longitude)) 
     } 
    }) 
} 
+0

7 Dezimalstellen gibt fast zentimetergenau. Warum willst du mehr? – AndrewR

+0

Warum dann der gleiche Ort Koordinaten lat langen Wert von Google Map zurückgegeben ist in 13 Dezimalstelle und dass von Google Place Picker ist in 7 Dezimalstellen? Danke Andrew für deine Antwort –

+0

Wenn du "von Google Map zurückgegeben" meinst, meinst du damit die Maps iOS API, die maps.google.com Website, etwas anderes? – AndrewR

Antwort

0

diesen Code Versuchen:

let geoCode = "\(String(format: "%.18f", place.coordinate.latitude)),\(String(format: "%.18f", place.coordinate.longitude))" 

Hoffnung seine hilft :)

+0

Danke @userar für Ihre schnelle Antwort .. Ich habe versucht, Ihren Code .. Es scheint zu arbeiten. Aber viele Nullen wiederholen sich nach der 7. Dezimalstelle .. Versucht für verschiedene Orte aus der Karte .. Es sieht aus wie 25.34390480000000077, 55.396507300000003227. Nachdenken über die Richtigkeit dieser Werte .. –