17 09 2013
GTA V Map Overlay
So last night Kotaku posted an article showing an image from Playstation Australia showing the GTA V map on top Sydney to give Australians a good perspective of the map size. That's all dandy and all, but I don't know how big Sydney is... So I decided to create my own images.
I went to Sydney in Google Maps and I took a screenshot, I kept a record of the scale used at the bottom of the screen. It showed both 2km and 2miles. I then took this map into photoshop and overlayed it onto the original that they posted and transformed it scale so it would match perfectly. This was a 118% scale up from my screenshot size. I then proceeded to go do this to all other cities in Australia making sure to keep the scale the same size for each screenshot. You can find all of these on their Facebook post.
I had pondered, why not just overlay the image onto a Google Maps map... So I went to Google Maps and got the sample code for an overlay (RTM is for nubs, or for when you get stuck). Seemed simple enough, just had to swap out the image they had with the GTA V map overlay. Now for the tricky bit.
I had to figure out how to set the bounds of the overlay. It had to be set with a north east position and a south west position. It was about this time that I think I realized that the original scale may have been slightly off. I took a rough-as-guts measurement in photoshop like so.
From what I can see of the scale, the top measurement is 2000 and 3000ft. The bottom measurement is [something, 750?] and 1000m. This would make sense as 3000ft = 914.4m. So from this scale I know that ~76px of image size = 1000ft = 304.8m. I then can use this value to say the whole overlay map is 8.05 x 10.7km (more accurate measurement in the source code).
Next we need to know how this relates to our positioning. We know from basic trigonometry that the cross section (south west corner to north east corner) of my map is 13.4km. I took the center of our Google Maps view as our reference point then I would find the point 6.7km north east (well, 36.86 degrees, not directly north east, just in that general direction) and the point 6.7km to the south west. Thanks to source and examples found in this article I was very easily able to do that and apply it to the bounds of our overlay.
One thing that did get me was that it would return lat/lon as degrees, minutes and seconds. But they had built in functions to convert that to a decimal value for lat/lon that I was looking for. After that it was just one extra step of updating the bounds of the overlay when you move the main map behind it.
I do plan to update this once I go get my copy of GTA V after I finish writing this post (yeah, I wrote this code rather than picking up my game >_<) so I should be able to get a much higher res scan of the map and do better, more accurate measures. That is, if the map is included of course...
UPDATE: I have since updated this map overlay. The overlay itself is now more accurate. I measured it better from a ~6000 x ~8000 px scan. I also made it just show the map outline, not the map as a whole. Added the ability to search for a city/street rather than making everyone scroll from Melbourne.