2017-05-17 8 views
0

Swift 3.0を使用しているiOSアプリケーションにGoogle PlacePicker APIを使用しています。 小数点以下13桁の精度が必要です。 Google PlacePickerでは、小数点以下7桁の緯度と経度が返されます。以下はGoogle PlacePicker API - 小数点以下のジオ座標精度(Swift 3.0)

は私の関数である。

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小数点以下の桁数をほぼセンチメートルの精度を与える願っています。なぜそれ以上のことをしたいのですか? – AndrewR

+0

Googleマップから返される同じ場所の座標の緯度の長い値は小数点第13位、Google Place Pickerの小数点以下は7桁ですお返事ありがとうございました –

+0

「Googleマップで返されました」と言えば、マップiOS API、maps.google.comウェブサイト、その他のものを意味しますか? – AndrewR

答えて

0

は、このコードを試してみてください。

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

は、そのに役立ちます:)

+0

あなたの素早い応答のための@userarありがとう..私はあなたのコードを試して..それは働いているようです。しかし、小数点第7位の後に繰り返されるゼロがたくさんあります。マップから別の場所を試してみました.25.34390480000000077、55.396507300000003227のように見えます。これらの値の精度について考えてみましょう。 –

関連する問題