It's possible that using touch gesture(s) in this instance to interact with the camera zoom may not be the best choice. Yes, faking a zoom on the client is one potential option, however you're still going to need to incorporate the real image at some point, possibly after some additional movement (i.e. left and right) has occurred - this disconnect could cause a lot of jarring movement or feedback to the user.
Also I think this type of "fake-it-on the client" type of thing works great when you can do it really well because you already have the content/data you're looking to fake (i.e if you are just displaying new data/content supplied directly by the user, or data that you already have in your app) but where this is relying on data/content from the real world, then that may not be the right approach. A better approach may be to choose a UI control that can align/interact with the real-world delay that is actually occurring.
So in this case you may be better off using something like a [+] / [-] style button(s) in the interface, that dynamically change to some sort of loading spinner while the system is working and the camera is doing it's work to actually zoom in/out. Once the zoom is complete, stop the spinner and return the button to it's original state. You may have to put a delay in the touch event on those buttons to allow the user to do multiple presses of the zoom-in/out button before it starts to work/spin (in case they want to zoom multiple levels). It also would likely be wise to show the max number of zoom "steps" in/out (or some visual way of displaying the zoom limits) and where the current zoom level on the camera is within that.
I should note that the plus/minus type buttons are just one possible example of the UI design options you could use here (could also possibly use just a slider) but the main point is that I think you're going to need to give the user some feedback to wait while the zoom is occurring. A double-tap might also work, but is a bit less usable because it will only allow you do zoom 1-increment at a time, and since there is a delay for each zoom, that would be frustrating.