 		self.tiledScrollViewDelegate.tiledScrollView?(self, didReceiveTwoFingerTap: gestureRecognizer)
 	}
 	
+	func t_screenPositionForAnnotation(annotation: JCAnnotation) -> CGPoint{
+		var position = CGPointZero
+		position.x = (annotation.contentPosition.x * self.zoomScale) - scrollView.contentOffset.x
+		position.y = (annotation.contentPosition.y * self.zoomScale) - scrollView.contentOffset.y
+		return position
+	}
 }

	func t_twoFingerTapReceived(gestureRecognizer:UITapGestureRecognizer) {
		if self.zoomsOutOnTwoFingerTap{
			
			let newZoom = CGFloat(
				max(
					powf( 2, Float( log2(self.scrollView.zoomScale) - 1.0 ) ),
					Float( self.scrollView.minimumZoomScale )
				)
			) // zoom out one level of detail
			
			self.muteAnnotationUpdates = true
			
			let popTime = dispatch_time(
				DISPATCH_TIME_NOW, kJCTiledScrollViewAnimationTime);
			dispatch_after(popTime, dispatch_get_main_queue(), {
				self.muteAnnotationUpdates = false
			})
			
			scrollView.setZoomScale(newZoom, animated: true)
		}

	func t_doubleTapReceived(gestureRecognizer:UITapGestureRecognizer) {
		if self.zoomsInOnDoubleTap{
			
			let newZoom = self.scrollView.jc_zoomScaleByZoomingIn(1.0)
			
			self.makeMuteAnnotationUpdatesTrueFor(kJCTiledScrollViewAnimationTime)
			
			if self.zoomsToTouchLocation {
				let bounds = scrollView.bounds
