Camera sliding from point to point

Hello, I am developing a 3D interactive map of a hotel resort in unity. I would need a hand with camera movement…

The camera is moving/rotating around an empty which shows certain area of the hotel. You can also zoom in and out. There are three GUI buttons on the screen. Each button will bring the camera to a different position for a different view. (at the moment I use only 2 lower buttons)

I am trying to make the camera fly/slide from one point to another when a button is clicked. I managed to do it but I can’t stop the movement. The camera flies to the position but it does not stop, it jitters there… I uploaded a demo so you can see what I mean - control with arrow keys and mouse wheel. Here is the code for camera “sliding”. I did not include the code for camera movement initiated by arrow keys and mouse wheel. Please, have a look… any ideas are welcome… maybe just point me in the right direction… let me know if you see I am doing something wrong… Cheers!

function OnGUI () {

	GUI.skin = customSkin;

	GUILayout.BeginArea (Rect (30,40,155,120));

		if (GUILayout.Button ("OVERVIEW", "btnOverview")) {
			print ("overview");
			   
		}
				
		if (GUILayout.Button ("STABLES", "btnStables")) {
			stables = true;
			gardens = false;
				
		}
		
		if (GUILayout.Button ("GARDENS", "btnGardens")) {
			gardens = true;
			stables = false;
				 
	    }	
	GUILayout.EndArea ();		    

}

function LateUpdate() {

		//stop the f*cking movement of the camera
	    Stables ();
	    Gardens ();
}

//animate camera movement from current position to view the stables

function StablesView () {

		//if stables button was clicked
		if (stables == true) {
				//move camera to stables view
	    		transform.position = Vector3.Lerp (transform.position, stablesView.position, Time.deltaTime * smooth);
	    		//rotate camera to stables view
	    		transform.rotation = Quaternion.Slerp (transform.rotation, stablesView.rotation, Time.deltaTime * smooth);
	    		//start "spinning" around the stables
	    		target = stablesTarget;
	    }

}

//animate camera movement from current position to view the gardens

function GardensView () {

		if (gardens == true) {
	    		transform.position = Vector3.Lerp (transform.position, gardensView.position, Time.deltaTime * smooth);
	    		transform.rotation = Quaternion.Slerp (transform.rotation, gardensView.rotation, Time.deltaTime * smooth);
	    		target = gardensTarget;
	    }

}

function Stables () {

		yield StartCoroutine("StablesView");
	//	stables = false;

}

function Gardens () {

		yield StartCoroutine("GardensView");
	//	gardens = false;

}

Ok, I kinda fix that… I guess it’s not the most brilliant way but it’s working for now… I used Collider so when the camera arrives at the position it collides with the object which is at that position and that stops the camera. If someone knows a better way I’ll be more than happy to see it.

function OnTriggerEnter (other : Collider) {

		if (other.gameObject == stablesObject)
				stables = false;
		
		if (other.gameObject == gardensObject)
				gardens = false;