Swift:谷歌地图API相机和MapView

时间:2016-10-04 04:49:43

标签: swift google-maps-sdk-ios

通过一些在线帮助,我成功地在我的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,但如何检索其坐标以便我可以设置相机和标记以显示搜索到的位置?

3 个答案:

答案 0 :(得分:1)

根据他们的documentation,您可以使用place.coordinate

获取该位置
let currentPlace: CLLocationCoordinate2D = place.coordinate

然后您可以将其经度和经度分别设为currentPlace.latitudecurrentPlace.longitude

这是documentation

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我以这种方式解决了。

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
}
相关问题