Mapping Mayhem

Mar 27, 2007  |  Michael Wurzer

We’re designing a new mapping module for our MLS software and one of the key design decisions we’re trying to make is how to handle large listing search result sets on the map. The challenge is that the current method of using JavaScript to manage the display of the listing points on the map isn’t scalable much beyond a few hundred and certainly not to several thousand listings. Other sites that use mapping seem to deploy a couple of methods to solve this challenge and I’m interested in which one you all think is best.

1. Only Display the First 50 (or some other number) of Matches. This approach solves the problem by only displaying a set number of listings on the map at one time. A good example of this is ShackPrices, which limits the display to the first 50 matches. This approach has the advantage of being relatively clear to the user and allows the user to sort the results to see the “most important” 50. The disadvantage is that it doesn’t give the user any sense of the context of the larger result set on the map.

2. Require the User to Zoom In. This approach solves the problem by requiring the user to zoom in on the map to a point where a manageable number of listings are displayed. An example of this approach is John L Scott, which shows this when too many matches exist:

johnlscott_too_many

The advantage of this approach is that it’s pretty easy. The disadvantage is that it limits the usefulness of the map to relatively small or less active listing areas.

3. Clusters. The third approach is to use “cluster points,” which basically uses a single point to resprent a large number of listings. Trulia uses this approach:

trulia_cluster_point

The advantage of clusters is you can still get some sense of the listing counts in an area even with high volumes. The disadvantage is that you still don’t get a full context. I think Trulia’s approach could be improved slightly by using varying sized icons to represent the relative size of the listing counts, similar to how GapMinder (recently bought by Google) does for statistics.

4. Non-Active Points. Another approach is to not use JavaScript to display the points, but rather pre-render map image tiles at higher zoom levels on a nightly basis and then display them as a tile overlay. This is the approach taken by ColoradoHomeStop and here’s a screen shot of listings in and around Denver:

coloradohomestop

This approach is similar to the heat maps used by Trulia and others in that the map tiles are pre-rendered as opposed to rendering them on the fly or live. The disadvantage, of course, is that the data isn’t live, it’s at least a day or more old, but at these high zoom levels, that shouldn’t matter too much. The advantage is that you can see the full context of the listings at all zoom levels. This approach can look really cool with different colors per status or other key criteria to see trends on a more macro level.

Please let us know what you think is the best of the approaches described above.

Take Our Poll

(I originally had included a poll option here, but it didn’t work properly because we’re using cross domains. Sorry. We’ll try to get the poll added back in but, until then, please add your comments below.)


An interesting side note is that while publicly accessible web sites can easily mash-up Google or other map systems, MLS vendors don’t have that luxury on the private side of the MLS because Google’s license requires the site to be “generally accessible to consumers.” Google and others do have options for commercial applications but we also need to integrate parcel maps, land use, flood zone and other layers into the mapping, which aren’t available through Google. This is our third map system integration into our MLS software. Like many MLS vendors, we started with MapQuest Enterprise Service in the early days. A couple of years ago, we switched to GeoJet so we could add parcel and other mapping layers to the system. Now we’re migrating all of our clients to MapServer. We’re very hopeful this will be our last mapping integration. 🙂 We’ve now got GIS expertise in-house and are working directly with a very large number of counties throughout the country on collecting parcel maps, imagery and other data layers.

14 Responses to “Mapping Mayhem”

  1. Steve Eli says:

    I don’t know very much about mapping and what can be done with it, but here’s an idea…

    I think options 3 and then 2 would work best for the end user. This still gives them the advantage of mapping a large amount of listings without taking away the ability to zoom in to see the individual map locations. We would just need to figure out at what point does the clustering start and at what point does the map not cluster. Zoom level would definitely be a factor to consider, but what about distance between listings? How many listings can be or should be considered a cluster?

  2. Robbie says:

    What Zearch does (my IDX product on RCG), is I map the 200 properties closest to the center of the map and color the pushpins by listprice (cheap – blue / expensive – red).

    If your search has too many dots to plot, I’d rather see partial results than none at all (so I’m not a fan of #2). #1 is easy to implement (although doesn’t give a good big picture overview). Mine has similar shortcomings as Galen’s ShackPrices does. #3 is better, but is tougher to implement. #4 is probably better looking but less functional than #3, since your dealing with pre-rendered tiles, it’s hinders you from doing interesting color/status stuff and the data isn’t live at higher lives.

    If you use MS WPF/E, Adobe Flash/Apollo, or maybe even Java, you might be able to avoid Ajax limitations and do what you really want to. Can’t you include a free ESRI ArcGIS or MS MapPoint license in the box? 😉

    Good luck w/ MapServer, although I suspect if one of your competitors buys a Decarta Drill Down Server (it’s what Zillow uses), you’ll be switching mapping platforms again.

  3. The fist time I went to John L. Scott ( a week or so ago), I was blown away. I thought now this I’ve gotta have. I started playing with the map and was very quickly disappointed at having to zoom to some remote, I don’t know where place, to some listings. Not being familiar with the area, I really wanted to see what real estate sales were doing in different places…kind of get a feel for the hot and not so hot spots. It’s very handsome, very ‘wow’ factorish. Another website I visited a few weeks ago limited my search to like the first 100. Quite frankly, that pist me off and I left. I wanted access to ALL of the listings and felt as if I were being cheated. Now that I know the technology limits behind the mapping, I would give the site a second chance but the consumer won’t do that. They could care less about the technology so a limited search I feel is way out of the question. When a website asks me for more input, I feel like punching the screen and yelling “who’s in charge of this search, me or you!” We all know the answer to that question.

    Clusters are a good idea. I think I could get the just of things with different colors and sizes. But then you throw in the licensing and other data you need in the maps it just doesn’t make sense to go that route. It doesn’t seem scalable to me…not for what you are describing.

    Tile overlay (like I know exactly what that means) seems to be your best bet. I hadn’t had the chance until your article to play with it. It’s not as pretty as the others but is sure is functional. I would much rather enjoy a quality full picture than half of a pretty picture. Also it sounds like you could improve on the aesthetics. If that’s the case, I don’t see where the dilemma is. Scalable, very intuitive and you don’t need to feed the pigs to get it done.

  4. Check out this Future of Real Estate Marketing Blog if you haven’t already:
    http://www.futureofrealestatemarketing.com/ononemap-gives-you-more

  5. Check out today’s topic on Future Of Real Estate Marketin..if you haven’t already.

  6. Thanks for the comment, Christopher. I completely agree with you, limiting the result set is so frustrating. Frankly, it takes away much of the value of the map as a tool for exploration. I think one of the best ways of using the map is just as you describe it, to see ALL the listings. I like to cruise around the map without any criteria at all so I can see everything that’s for sale or has been sold in the neighborhood. The difference is that the map becomes a tool for searching and exploration instead of just a tool to see the location of search results you found from other criteria. These other approaches don’t allow for that. We think we may have something figured out to dynamically render huge result sets now, so we may have this one solved. I’ll keep you posted as we test out our ideas.

  7. I love the non-active points. I’ve been playing with it for the last 15 minutes. As an end user it seems very functional and would be very helpful to present available inventory in this user friendly manner to clients. I am glad FlexMLS is looking into these revolutionary approaches to display listings as opposed to the dated Yahoo and Mapquest display results.

  8. Aggregating The Long Tail: Making Micro Useful

    There is a lot of talk about micro-blogging in the real estate blogosphere but not a lot of discussion about the issues or how to deal with micro-content in the aggregate.  
    To start, I like the idea of local content (hence the name ForSaleByLocals …

  9. Robbie, we evaluated Decarta’s DDS product and it is nice, and the people I dealt with there were even nicer. Not only does Zillow use DDS but so does Google, Yahoo! and others. Pretty impressive. The reason we didn’t go with it was that, at that time anyway, about six months ago, their tools for importing data were limited. We deal with map layers, especially parcel maps, we get directly from counties and DDS didn’t have an easy for us to deal with those. They could process the files for us but we really needed to do it ourselves because we service a lot of counties outside of metropolitan areas that aren’t covered by the national parcel collections. Parcel maps are critical for accuracy purposes. With sites like Google, the geo-coding you get is always an approximation along a street segment, because they are only using street data. With parcel data, however, we can get the match exactly in the proper lot, which is important for an MLS application. The beauty of MapServer is that, being open source, it also is can process nearly any type of map file and use external map services, too. Also, at the end of the day, to get the speed, pre-rendering of streets and aerials into small map tiles is critical. Although what everyone sees is the smooth panning and zooming of sites like Google maps, I’m not sure everyone realizes that those maps are pre-rendered into images and simply sitting in a massive image cache. So, the real speed is coming from use of the cache, not from the map rendering engine. We’ve now tiled the NAVTEQ street data and are beginning to tile a large amount of aerial imagery and parcel shape files. We’re putting the tiles on a huge, redundant NetApp box, whose only job is to serve the tiles. So, we’re expecting the mapping to be fast and scale well.

    After I wrote this post, we looked more into what ColoradoHomeStop is doing and it’s now pretty clear to us that they are actually rendering those points live, which is really impressive. We’re researching it more now but believe it is possible to render only the listings into an otherwise transparent image that sits on top of the pre-rendered street and aerial maps. This approach is the best of all worlds, really, where you can render massive amounts of listings with speed. Then, when you get to lower zoom levels, the listing points are made active through an image map approach. This isn’t as powerful from a UI perspective as using the pop-up bubbles made popular by Google, but we think we can use both.

    From the comments on this and my later post, it’s pretty clear users want to see ALL the listings, so I really think this is the best approach. Interestingly enough, our old MapQuest solution used this approach, too, and we had no listing limits there. With GeoJet, we had listing limits, and we thought we were going to need them with MapServer, too, but now we’re hopeful we won’t. That will present a very powerful application, to be able to see all the listings at all zoom levels.

  10. eN is developing a new mapping system for remax.com. I believe we have it live in Southern California area in a beta test. Talk to Dan if you haven’t already, he has been facing the same questions.

  11. Lee Shennum says:

    I’m glad to see so many informed people working on the mapping system for MLS. Although I am not as well informed as to what the average person is using the system for, I have found that the new system is slow loading, not enough contrast to print as a usable map. I have not used the system for the clustering that is mentioned but will try to expand my use to include that service, the only problem is will it print off well enough to be used either singularly or to indicate clusters?

    I would like to see the old, usable, mapping system back in place until something better is actually developed or decided on. The old was better than having to hand draw a map to use to find a property.

  12. Zigana says:

    I want to join robosapien becaz i want to reaseach in robotics.
    I am from Liechtenstein and learning to read in English, give please true I wrote the following sentence: “You still can find discounted airline tickets to the philippines by managing here a few tips on how you can discover cheap international airline tickets.”

    With love 8-), Zigana.

  13. […] Google is plotting all the listings nearly all the time (except when zoomed way out).  This is the same approach we took with our mapping, because it gives users a better perspective on all the […]