Believe it or not, I had already solved this one while testing my trilateration algorithm. I had to use great circle distances instead of ellipsoidal distances to get a good match. That means that the cache owner used a spherical model of the Earth in creating the puzzle.
If you are not getting good results with Google Earth, then the problem may be with it using the ellipsoidal estimate.
I minimize the sum of squared distances between the target and actual distances, which is arguably not the ideal metric, but which works well for me. For this problem, the difference between my ellipsoidal and spherical solutions was about 600 feet.
There may be someplace online that does spherical trilateration for you; I am not familiar with any, but that doesn't mean they don't exist.
The other option is to do it yourself using a combination of your method now and FizzyCalc. Here is one method for manual iteration that should work pretty well.
First, find an approximate solution where the distances are all right to within a quarter mile or so. Then calculate the distance between one of the reference points and your guess with FizzyCalc in spherical mode. Save the reverse azimuth! Now project the distance you were off along that reverse azimuth from your guessed point. Now do the same for the next reference point, using your new guess. Continue this process with the rest of the reference points. When you finish continue with the first one until the distance you are moving is very small. This process should converge on the correct answer.
Here's an example. I am using spherical distances:
Reference Point A: N 47 15.700, W 105 18.500 Distance = 603.994 nm
Reference Point B: N 48 01.000, W 122 20.600 Distance = 558.828 nm
Reference Point C: N 38 10.050, W 112 14.560 Distance = 186.123 nm
OK, so let's say I map this and get a guess of N 40 12.341, W 115 15.827
Now, from A to the guess is 603.652 nm, rev az = 42.1907 degrees.
So since the target distance is greater than the actual distance, I project from the -0.342 nm at 42.1907 degrees, giving a new estimate of N 40 12.088, W 115 16.128 (yes, FizzyCalc will let you project a negative distance!)
From B to this new estimate is 558.703 nm, rev az = 329.393 degrees.
Again the target distance is larger so I project -0.327 nm at 329.393 degrees, giving a new estimate of N 40 11.807, W 115 15.910
From C to this new estimate is 185.946 nm rev az = 129.934 degrees.
Target distance is still greater, so I project -0.177 nm at 129.934 degrees, which gives me a new estimate of N 40 11.921, W 115 16.088
I start again with Point A. Remember to be careful of the sign of the projection distance; in this case, it will be positive because the distance is now smaller than the target. I won't go through the details, but here are the points you should get by continuing:
N 40 11.997, W 115 15.997
N 40 12.001, W 115 16.000
N 40 12.001, W 115 16.000
N 40 12.000, W 115 16.002
N 40 11.999, W 115 16.001
As you can see, we have converged. We started out off by 0.366 nm, and in less than 10 iterations we have the correct answer.
Try it and let me know how it goes!
Hey Fizzy,
Thanks for the help! That looks like a lot of work, and reminds me of my surveying days. When I have time I will certainly follow the steps you suggested, and let you know how it turns out.