MIT Globe Genie (Random Street View)
web.mit.edu
web.mit.edu
This would have been much more interesting if they'd allowed people to vote places that they were parachuted in up or down, and then displayed the distribution of interesting places around the world.
Also would have been nice if the "search" wasn't so slow.
Weird?
I'd love to live in such a place.
What I would do is a sort of "computer vision". Map has well defined colors for features, so you just need to check pixels with proper shading.
This should be quite easy as street view availability seems like a transparent overlay image, so you even wouldn't need to distinguish it from other map features.
And even if it's composited with the map image server-side, it should be still quite easy to extract it, just look for pixel diff compared to normal map image.
For you interest and information, he has a defined set of bounding boxes in the world for each of the user pickable regions. He generates random lat lons until one lands in an enabled region's bounding box and then makes a request for street view data to google. If google returns a 200 he sets the street view display to the lat Lon and otherwise tries to find another lat Lon. If he ever gets a 500 from Google he quits.
I wasn't trying to figure out how it was done, I was trying to figure out how to do it fast (irrespective of the present implementation), responding to the question:
"I wonder if there's a faster way to do that with their API?"
I did check the source code. The most time is spent doing dozens to hundreds requests to Google API.
If instead of this you generated random locations just from "blue" regions of StreetView coverage, user experience would be better.
The simplest way how to do it would be to fetch StreetView coverage overlay PNG and use canvas getImageData to check pixel values for random locations, thus moving costly roundtrip validity query mostly to the browser.
This is not something terribly difficult and perfectly suitable for half day fun project.
It's not something terribly difficult — it's something that is completely impossible for a very good reason.
There are ways how to get around cross-domain security restrictions. Long ago, I have done it myself by a simple server-side proxy here (few lines of PHP):
http://alteredqualia.com/visualization/evolve/
About Globe Genie optimization. In fact, I implemented it, sent a patch to the author and it's already live there (check the source code). It cuts cross-network locations validity lookups by about 60%.
Here I didn't do proxy, just fetched a complete set of overlay tiles once and stitched them together with a Python script:
http://alteredqualia.com/tmp/gg_overlay_optimization/data/ov...
It's just a static prebaked lookup map (served from the same domain), though if you really want to have it up-to-date, you could hook up Python script to cron.
All this took few hours (Sunday evening hacking) and was quite fun to do.
But still it's amazing, looking around the world randomly. It would be nice if there was a better virtual driving tool, or more zooms (aerial views). At the moment you can only double click repeatedly and you go about the same speed as a car.
Out of maybe a dozen tries, I have had one African hit that was not in South Africa, and that was a Spanish-owned island off the coast of the Sahara.
Try normal Google Maps, zoom out to see the whole world. Drag yellow StreetView dude, you will see blue overlay showing StreetView coverage (ignore isolated dots, these are Panoramio photos).
You will see that South Africa is the only place in Africa with coverage.
It took me from the Rhondda Valley in Wales, to Fresno, CA, to Virrat, Finland.
The breadth is amazing.