Основываясь на этом блоге, вам нужно сначала добавить свойство let locationManager = CLLocationManager()
, который добавит и создаст экземпляр свойства CLLocationManager
с именем locationManager
.
Затем найдите viewDidLoad()
и добавьте эти две строки внизу, которые сделают MapViewController
делегатом locationManager
и запросят доступ к местоположению пользователя.
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
Из этого связанного thread вы должны создать экземпляр класса CLLocationManager
в viewDidLoad()
следующим образом :
// Ask for Authorisation from the User.
self.locationManager.requestAlwaysAuthorization()
// For use in foreground
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
Затем в методе CLLocationManagerDelegate
вы можете получить текущие координаты местоположения пользователя:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
var locValue:CLLocationCoordinate2D = manager.location.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
Затем, чтобы добавить маркер, создайте GMSMarker
объект, включающий position
и title
, и установите его map
. В следующем примере показано, как добавить маркер к существующему объекту GMSMapView
. Маркер создается с координатами 10,10
и отображает строку «Hello world» в информационном окне при нажатии.
let position = CLLocationCoordinate2DMake(10, 10)
let marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = mapView
Наконец, сделайте маршрут между двумя точками, вы можете проверить эти ссылки:
Теперь в методе createRoute
укажите название этого города или что угодно в качестве источника, например:
@IBAction func createRoute(sender: AnyObject) {
let addressAlert = UIAlertController(title: "Create Route", message: "Connect locations with a route:", preferredStyle:
UIAlertControllerStyle.Alert)
addressAlert.addTextFieldWithConfigurationHandler { (textField) -> Void in
//give a origin for route
textField.text = self.currentLocationName
textField.userInteractionEnabled = false
}
addressAlert.addTextFieldWithConfigurationHandler { (textField) -> Void in
textField.placeholder = "Destination?"
}
let createRouteAction = UIAlertAction(title: "Create Route", style: UIAlertActionStyle.Default) { (alertAction) -> Void in
let origin = (addressAlert.textFields![0] as! UITextField).text as String
let destination = (addressAlert.textFields![1] as! UITextField).text as String
self.mapTasks.getDirections(origin, destination: destination, waypoints: nil, travelMode: nil, completionHandler: {
(статус, успех) -> Пусто, если успех { self.configureMapAndMarkersForRoute() self.drawRoute() self.displayRouteInfo() } else { println(status) } }) }
let closeAction = UIAlertAction(title: "Close", style: UIAlertActionStyle.Cancel) { (alertAction) -> Void in
}
addressAlert.addAction(createRouteAction)
addressAlert.addAction(closeAction)
presentViewController(addressAlert, animated: true, completion: nil)
}
Сначала получите координаты всех точек, которые входят в маршрут, затем добавьте широту и долготу этих точек в путь, чтобы нарисовать путь в соответствии с этим
GMSCameraPosition *cameraPosition=[GMSCameraPosition cameraWithLatitude:18.5203 longitude:73.8567 zoom:12];
_mapView =[GMSMapView mapWithFrame:CGRectZero camera:cameraPosition];
_mapView.myLocationEnabled=YES;
GMSMarker *marker=[[GMSMarker alloc]init];
marker.position=CLLocationCoordinate2DMake(18.5203, 73.8567);
marker.icon=[UIImage imageNamed:@"aaa.png"] ;
marker.groundAnchor=CGPointMake(0.5,0.5);
marker.map=_mapView;
GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(@(18.520).doubleValue,@(73.856).doubleValue)];
[path addCoordinate:CLLocationCoordinate2DMake(@(16.7).doubleValue,@(73.8567).doubleValue)];
GMSPolyline *rectangle = [GMSPolyline polylineWithPath:path];
rectangle.strokeWidth = 2.f;
rectangle.map = _mapView;
self.view=_mapView;
Надеюсь это поможет!
person
abielita
schedule
18.07.2016