     
     override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
         if object as? KPLocationManager == KPLocationManager.sharedInstance() && keyPath == "currentLocation" {
-            self.moveToMyLocation()
+            self.moveToMyLocation(completion: nil)
             KPLocationManager.sharedInstance().removeObserver(self, forKeyPath: "currentLocation")
         } else {
             super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)

        let currentLocationButton = UIButton(type: .custom)
        currentLocationButton.setImage(R.image.icon_currentLocation(), for: .normal)
        currentLocationButton.addTarget(self,
                                        action: #selector(moveToMyLocation), for: .touchUpInside)
        currentLocationButton.alpha = 0.7
        self.view.addSubview(currentLocationButton)
        currentLocationButton.addConstraints(fromStringArray: ["H:[$self(40)]-16-|",

    }
    
    func moveToMyLocation() {
        moveToMyLocation(completion: nil)
    }
    
    func moveToMyLocation(completion: ((_ success: Bool) -> Void)?) {
        if let location = KPLocationManager.sharedInstance().currentLocation?.coordinate {
            CATransaction.begin()
            CATransaction.setCompletionBlock({
                if let ddddd = completion {
                    ddddd(true)
                }
            })
            CATransaction.setValue(NSNumber(floatLiteral: 0.5), forKey: kCATransactionAnimationDuration)
            self.mapView.animate(to: GMSCameraPosition.camera(withTarget: location,
                                                              zoom: 18))
            CATransaction.commit()
            
        } else {
            if completion != nil {
                completion!(false)
            }
        }
    }
    
