【问题标题】:Swift: Google Map API Camera and MapViewSwift:谷歌地图 API 相机和 MapView
【发布时间】:2016-10-04 14:22:27
【问题描述】:

借助一些在线帮助,我成功地在我的 iOS 应用中实现了一些 Google 地图功能。

extension GoogleMapViewController: GMSAutocompleteResultsViewControllerDelegate {
    func resultsController(resultsController: GMSAutocompleteResultsViewController,
                       didAutocompleteWithPlace place: GMSPlace) {
        searchController?.active = false
        // Do something with the selected place.
        print("Place name: ", place.name)
        print("Place address: ", place.formattedAddress)
        print("Place attributions: ", place.attributions)

        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.cameraWithLatitude(-33.86, longitude: 151.20, zoom: 6.0)
        let mapView = GMSMapView.mapWithFrame(CGRect.zero, camera: camera)
        mapView.myLocationEnabled = true
        view = mapView

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = place.formattedAddress
        marker.map = mapView
    }
} 

我相信我已经从搜索栏中获得了place.formattedAddress,但是如何检索它的坐标以便我可以设置相机和标记以显示搜索到的地方?

【问题讨论】:

    标签: swift google-maps-sdk-ios


    【解决方案1】:

    根据他们的documentation,可以使用place.coordinate获取位置

    let currentPlace: CLLocationCoordinate2D = place.coordinate
    

    那么可以得到它的经纬度分别为currentPlace.latitudecurrentPlace.longitude

    这是documentation

    【讨论】:

    • 我试过“mapView.camera = GMSCameraPosition(target: place.coordinate, zoom: 15, bearing: 0, 查看Angle: 0)”,但是没用。
    • place.coordinate 返回一个CLLocationCoordinate2D 。我已经更新了我的答案以反映这一点
    【解决方案2】:
    To set the camera position at particular place , first we have to declare a object of CLLocationCoordinate2D and then get the latitude and longitude of that particular place .
    
    var currentPlace:CLLocationCoordinate2D = place.coordinate 
    
    Now you are able to get the latitude and longitude by writing currentPlace.latitude and currentPlace.longitude .
    
    Since you have lat/lon , you can easily set the camera position on that place .
    
    let camera = GMSCameraPosition.cameraWithLatitude(currentPlace.latitude, longitude: currentPlace.longitude, zoom: 6.0)
    
    let mapView = GMSMapView.mapWithFrame(CGRect.zero, camera: camera)
        mapView.myLocationEnabled = true
        view = mapView
    

    【讨论】:

      【解决方案3】:

      我就是这样解决的。

      func resultsController(resultsController: GMSAutocompleteResultsViewController,
                             didAutocompleteWithPlace place: GMSPlace) {
          searchController?.active = false
          // Do something with the selected place.
          print("Place name: ", place.name)
          print("Place address: ", place.formattedAddress)
          print("Place attributions: ", place.attributions)
      
          // Create a GMSCameraPosition that tells the map to display the
      
          let camera = GMSCameraPosition.cameraWithTarget(place.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
          let mapView = GMSMapView.mapWithFrame(CGRect.zero, camera: camera)
          mapView.myLocationEnabled = true
          view = mapView
      
          // Creates a marker in the center of the map.
          let marker = GMSMarker()
          marker.position = place.coordinate
          marker.title = place.formattedAddress
          marker.map = mapView
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        相关资源
        最近更新 更多