Talks

Micro Talk: Maps want to be free!

How to build your own online maps and free yourself from Google Maps limitations and fees.

GoRuCo 2012

00:00:16.800 Raise your hand if you use Google Maps in your application or if you know about the Google Maps API. Now, raise your hand if you know what the cost of using the Google Maps API is. Raise your hand if you think it's free, and raise your hand if you know about any of the licensing restrictions included in the Google Maps API. It seems there are a few who are aware.
00:00:42.719 The whole story started because, like most people, we always thought that Google Maps were free, with a little asterisk saying that you might be asked by Google to pay for an enterprise license at some point if you get too many requests. Last fall, Google suddenly announced that they were going to charge if you had more than 25,000 views per day. Up until that point, 25,000 views per day seemed generous.
00:00:55.600 However, for us at 3DC, it was a problem because we do 22 million pages per month, most of which have maps in them, totaling about 700,000 map views per day. At four dollars per thousand map views, that would amount to almost a million dollars per year in fees, which was quite alarming. We were frustrated at the idea of paying 20 times what we pay Amazon for servers, just for maps. Someone suggested we could get more servers to reduce that multiplier, but that wasn't the best solution.
00:01:36.560 One of the problems with depending on Google for your presentations is that they may change their pricing with little notice. As of yesterday, it is now going to be 50 cents instead of four dollars per thousand views, but that still means 120,000 dollars per year in fees. When we first saw the number—900,000 in our case—we realized that for this amount of money, we could hire a developer full-time to work on maps and figure it out. So we decided to build our own maps and let go of Google.
00:02:24.400 We looked at OpenStreetMap, and it was daunting, like stacking every Wikipedia page on top of one another. But we discovered that it is actually possible to create nice maps using OpenStreetMap data. We found inspiration in amazing projects and resources such as Stamen Design, CartoDB, and the theme behind Mapbox, which produces a tool called TileMill that lets you take map data and build your own tilesets. This is what we ended up doing.
00:02:53.440 Since January, we've been running our own maps for StreetEasy, trying to fill our needs. It took about a month and a half of work, during which I played with maps extensively. We utilized data from OpenStreetMap, the City of New York, City University of New York, and our own data, incorporating streets from OpenStreetMap and building outlines from the city.
00:03:16.239 We used our own neighborhood boundaries and designed our own tiles on TileMill. We host the tiles on Mapbox, where we could also host them directly on S3, but chose Mapbox for the additional tools they offer, including static maps APIs. Ultimately, this cost us about 15 to 20 thousand dollars per year, which is variable depending on how many requests we receive.
00:03:58.000 In total, we managed to reduce our anticipated costs significantly. Instead of potentially negotiating our way down from a nominal 900,000, to maybe 300,000 with Google, where today we would only be paying 120,000, now we only pay around 20,000 dollars. While maps are not free, at least we now have a product that belongs to us, which we can modify as needed without waiting for Google to update their databases.
00:04:48.000 I can use a bicycle and a GPS device to document areas that are absent from OpenStreetMap. This autonomy is particularly evident when we added streets that were missing both from OpenStreetMap and even from Google until we made a complaint about it. Furthermore, to highlight how current your data is, Apple’s new iOS maps were two years behind on some blocks that had new developments.
00:05:41.600 There are enough tile options available from Mapbox, MapQuest, CloudMade, and Stamen to allow you to build your own maps using tools like TileMill or Web Map Studio. JavaScript libraries exist to display those tiles in your application, a functionality that Google also provides. We specifically chose Leaflet for its speed and clean code, but there are also alternatives like OpenLayers and Modis Maps, among others.
00:06:31.520 Being at a Ruby conference, I should mention some Ruby-specific libraries, such as Gmaps for Rails, which, despite its name, also supports abstraction and OpenLayers. However, I believe none of these have good support for Leaflet. There's also Graticule and Yellow Maps for Rails, which allow you to use Ruby code to generate the corresponding JavaScript for map rendering.
00:07:08.000 You should keep in mind that when you handle your own maps there are hidden costs. You will need to account for bandwidth and the work that goes into producing and serving the maps. If you expect to render tiles frequently, investing in faster databases is essential, especially with large data sets for cities like New York. Moreover, if you're aiming to map the entire world, this task becomes complicated.
00:08:29.360 The challenges of transitioning from one mapping system to another sometimes lead users to react negatively. We were surprised at 3DC to receive about half a dozen emails on our launch day with another dozen over the week, and after that, no complaints. Despite our expectations of complaints regarding missing features, we found instead that most were about shortcomings that we were already aware of.
00:09:02.720 If you can live without satellite imagery and street view, consider switching. Providing these offers using open data is challenging. If you're less concerned about geocoding, keep in mind that it’s part of Google’s offerings that are still being improved but are not completely resolved, just as with routing. The decision can be influenced by whether you want to cover the world at a deep zoom level or only map specific areas deeply.
00:09:54.720 If you decide to stay with Google, always have a contingency plan. Using abstraction layers makes it easier to switch mapping services once you hit the limitations of free offerings or if costs change. Be careful of the fine print in licensing terms; for instance, few know that Google Maps cannot be utilized for vehicle tracking, which could lead to breaches of service.
00:10:42.800 When you’re creating your own maps, automate updates to avoid the manual effort that comes with keeping your maps current. While cartography is essential and a fun challenge, it’s easy to get bogged down in trying to make your maps look perfect. Thank you, and it seems we've run out of time.