2015-01-30 6 views
0

Я рисую немного пробела, я хочу скрыть синюю точку местоположения от API iOS Google Maps. Но если я устанавливаюКак скрыть местоположение Google Maps Dot

self.mapView.myLocationEnabled = false

Тогда все место службы остановлены. Мне нужно только временно отключить синюю точку, есть ли способ очистить ее, продолжая обновлять местоположения в фоновом режиме?

ответ

0

Принял меня некоторое время, но я думаю, что у меня это работает.

В вашем viewDidLoad():

// MARK: Location Settings 
    // Location Manager 
    locationManager.requestWhenInUseAuthorization() 

    if CLLocationManager.locationServicesEnabled() { 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.startUpdatingLocation() 

     mapView.delegate = self 
     mapView.settings.myLocationButton = true 

    } 

Вам нужен этот кусок кода, чтобы назначить делегатов и начать обновление местоположения. Это также добавит кнопку местоположения на карту google. Вам также нужно будет добавить сообщение авторизации в info.plist.

{key=NSLocationWhenInUseUsageDescription}: {type=String}: {value=custom message}.

И тогда вам нужно будет расширить эти делегатов (поместить их в нижней части MapViewController вне своего класса):

// MARK: - Extension: LocationManager 
extension MapViewController: CLLocationManagerDelegate { 
    func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { 
     if status == .AuthorizedWhenInUse { 
      locationManager.startUpdatingLocation() 
     } 
    } 

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     if let location = locations.first { 
      mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0) 
      locationManager.stopUpdatingLocation() 
     } 
    } 
} 

// MARK: - Extension: GMSMapView 
extension MapViewController: GMSMapViewDelegate { 
    func didTapMyLocationButtonForMapView(mapView: GMSMapView) -> Bool { 
     locationManager.updateLocation() 
     return false 
    } 
} 

CLocationManagerDelegate:

  1. didChangeAuthorizationStatus только вызывается при включении/отключении locationServices.
  2. isUpdateLocations вызывается, когда активируется startUpdating. Таким образом, он начнется, когда представление загрузится (как в viewDidLoad), а затем перестанет обновлять местоположение после его местоположения.

GMSMapViewDelegate:

  1. didTapMyLocationButton вызывается всякий раз, когда кнопка нажата место.
0

Я тестировал то же самое, я добавил строку кода в свое приложение и отобразил местоположение пользователя на картах Google.

mapView.myLocationEnabled=YES; 

Если я полностью удалить эту строку кода, она отображает все другие аннотации и не показывает местоположение пользователя

-1

Настройка камеры Позиция

let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: 48.857165, longitude: 2.354613, zoom: 8.0)   

viewMap.camera = camera 
viewMap.delegate = self 

Initialize окружность с радиусом 0

let circle = GMSCircle.init(position: camera.target, radius: 0) 
circle.fillColor = UIColor.clear 
circle.map = viewMap 
Смежные вопросы