[OSM-dev] Cartagen - client-side vector based map renderer, dynamic maps

Tels nospam-abuse at bloodgate.com
Wed May 6 21:38:16 BST 2009


2009/4/25 Jeffrey Warren <war... at mit.edu>:
> I'm working on a Javascript map renderer, non tile-based. It's really
> early-stage alpha, and not publicly released yet, but I'd love some feedback
> from folks as I'm continuing to develop it.

Sorry for not replying directly or earlier, I wasn't subscribed to this list
until 5 minutes ago :)

Initially I didn't want to spread my project to far, as it was (and is) still
quite beta. However, now that so many people start pursing the same idea... ;)

Jeffrey, you wrote:

> It's not been optimized yet, so loading is a little slow, but I'm optimistic
> that it will scale.

Based on my experience, I can tell you right away it won't scale :) Not to
discourage you, but:

* the amount of data is really huge. Throwing a few dozend megabyte XML or even
JSON at the browser will bring it to its knees. Not to mention the data you need
to render even a small city.
* re-rendering everything takes a long time. You want to avoid that :)

My app has already quite a few optimizations, and it still chokes at big cities
like Berlin or London. However, I am confident that things can be improved :)

(Browser limitations non-withstanding. Single-threaded dead-slow JS and
incomplete Canvas spec without dashe I hate thee... :(

Regarding the rule sets and CSS:

I've already considered adding a different rule-set (just to show that it can be
done). However, from a technical viewpoint, that is not that spectacular. As long
as the renderer is flexible enough to handle the wanted features, it doesn't
really matter in what format the rules are (CSS, GSS, JSON, XML, you name it) or
where they come from (hard-coded, web, URI, user input), as long as you can load,
parse and convert them, it can display them.

In my eyes the much bigger impact is that you no longer need different sets of
tiles or tile providers - just the data and the rules to display it and the map
can morph in real-time from mapnik to cyclemap to whatever-you-want. And one more
button click and the user can save it locally. That's at least my vision I work
towards :)

All the best,


More information about the dev mailing list