The other day I was looking through the CVS messages, as I have been actively developing the OpenLayers Module, and noticed the Mapping Kit Module. This was just after having a conversation with Tom (tmcw) about the Mapstraction Library and Module and about how we could possibly create a more single solution in Drupal just for the presentation side of Drupal as a GeoCMS. I also recently discovered BDragon's Vision which is a really great view of what needs to happen for Drupal to become a GeoCMS.
So, to help point out where we are at, hear are the following Drupal mapping modules (that I know about and adding as I find more); notice that this does not include the non-mapping GIS modules:
- Gmap (and GMap Addons)
- OpenLayers
- Nice Maps
- Mapstraction
- Mapping Kit
- GeoBrowser
- TrackField
- Simplest GMap
- GMap Geo
- Google Maps Tools
I am definitely not here to argue or discuss which ones are better. I would like to discuss how most of them serve similar purposes and have similar coding paradigms, and maybe we want to discuss how to have a more centralized, encompassing solution in Drupal.
But this isn't that discussion; this is just seeing if anyone is out there and wants to have that discussion. So, here are my questions to the readers of this post, that are specifically the developers of these modules or someone that is interested in this discussion and contributing:
- Did you get this?
First, it's important to know if if this a good channel to go down. If not, then I'll just try contacting everyone individually, or posting up to Drupal Planet. - Do you think we should create a more centralized solution for Drupal, or should we go down the more capitalist approach and let the best module win?
Bdragon's vision is awesome, but we haven't really had a concentrated effort to realize it.
To all the developers and contributors, as always, thanks for the great work.

Comments
Trackfield
Hi,
You forgot trackfield ;)
Trackfield was developed for documenting... erm... tracks on maps. One feature I wanted was the ability to store user (and by this I mean, site configured) data at each point. In this way an athlete with a GPS can store heart rate, altitude, etc. on their path. It is possible to build a site very similar to MotionBased based on Drupal and this module.
It is in heavy use on Northern Beaches Mountain Biking Group. The way this is setup is that a 'track' is associated with an 'area'. Eg: Manly Dam page. It has a 'tracks' tab that is just a view showing the tracks within them.
There is a KML module for viewing in Google Earth (or Google Maps for that matter - NoBMoB Manly Dam on Google Maps) them automatically appear on the site's KML feed (check out http://nobmob.com/rides/kml - this is a custom module that includes all KML for all 'area' nodes) along with images.
I recently wrote a small stats page too (http://nobmob.com/rides/statistics) and there's a small module that uses trackfield (here: http://nobmob.com/hill_profiles) that allows a few hill profiles to be compared.
From what I know a couple of other outdoor based sites are using this but not sure exactly who is.
Interestingly I just committed some nice changes on the weekend for D5 which make things more configurable and make the graphs (altitude, heartrate, etc) look nicer.
There is a D6 version and I need to get the above commits into that ASAP. Oh - where to find the time! ;)
Cheers!
Off Topic
@raintonr
Thanks, I did not notice that one. It looks pretty cool. I'll have to take a look at it.
But, you really went off topic and did not even address what my original point was about and the questions I asked. For anyone responding to this, please answer the original questions, the whole point of this post is to see if this is the correct channel to have this discussion, and if we should have this discussion.
--
zzolo
zzolo.org
--
zzolo
Sorry - Yes
Erm... sorry :">
Think the answer to this must be go the central solution as loads and loads of modules makes it hard to choose. That said, it makes the one solution more complex as it has to meet more needs.
Another small one
Simplest gmap a cck implementation easy to use
Hey, zzolo.
Hey, zzolo.
I don't mind a decentralized ecosystem of mapping modules--however I'm committed to a unified way of dealing with actual geodata--storing and retrieving with Geo.
There are plenty of mapping services and mapping stacks, and I think that there's no way to effectively unify them; Mapstraction will work well for some, while others might want to take advantage of platform-specific features or code written for their chosen mapping service.
I think it would be useful to us geo-drupal developers to keep the core pieces of functionality laid out in BDragon's vision in mind as we build things; that document lays out the problem set well.
We should be going for
We should be going for standards and libraries. Libraries which are functional should be completely standard – meaning GeoRSS and KML generation – a module for each or a ‘geofeed’ module or something like that that handles both. Why reimplement KML output in every GMap, OpenLayers, etc., module?
Map display libraries should be broadly compatible with each and contain absolutely nothing but the mapping component: Views to maps, as simple as that. The only corner case is inline maps, and, to be honest, there's no good architecture for anything inline in Drupal yet.
The final component is data storage: all methods of storage should be completely compatible because they interact with output modules only via views, but we should have a de-facto standard on the best method. So far it seems to be a race between CCK lat/lon and WKT (Geo's choice), and I think that WKT should be the standard because of its ability to store more than just points, but that’s just me. For the time being, they can be equivalent because of Views field handlers.
Mapstraction inhabits a different use case than Nice Map - we should make it possible to have both Nice Map and Mapstraction installed without getting two KML outputs, two content types, two of anything. And map display modules should focus on keeping up with APIs instead of maintaining lots of other code.
So, my ideal architecture is:
Also in agreement with centralization & modularity
I just came over from Joomla, with which I was already disenchanted. 1.5 may be better, but I gave up at 1.0 because I was tired of too many crap add-ons that did mostly the same thing, birthed because there was some small feature enhancement needed, programmed by people who don't really know how to program...
As a developer, Drupal's main draw for me is the API and strong coding / documentation standards. So it makes total sense to me to extend this methodology and framework into the various logical functionality subsets.
There's going to be an increasing demand for geocoding because humans like to track stuff in the physical realm. So if Drupal can provide a unified & robust basic infrastructure for doing so, I think it would be very useful to the community.
I'm in agreement with
I'm in agreement with tmwc:
My presentation at Drupalcon was about this in a way, I to layered how the various technologies fit together and how they can be swapped out. That is the kind of modularity is what lets people work fast and do new things.
Let's get a team together!
Agreed as well.
Brandon and I have been working on moving towards getting location_cck into the entry space as is mentioned in his vision. We have several people here that are either largely working with geo work in Drupal or are willing to.
Let's start getting organized and I think that we can really make this happen.
We obviously have this g.d.o group, and I've just stepped over to #drupal-geo on IRC for us to be able to hash things out as well.
Jeff, Alan, Tom, and others what do you say? Ready to take this to the next level.
I do think this is the
I do think this is the correct place for this discussion. The group's been around a while and anyone with an interest in Drupal geo modules has had a good chance to find this group.
I agree with tmwc above; there have been so many geo modules now and in the past, and many of them did not interact at all. This meant that every one of them had to implement a bunch of overlapping functionality, and none of them did everything well. Some were good at the output but terrible at the geocoding, some stored lat/longs naively as numeric fields etc etc The only shared functionality seemed to revolve around the locations module, which seemed rather terrible in several respects, with its implementation of postcodes (ZIP codes) and so on.
If we had one agreed, centralised, standardised storage format, I believe all these other modules would have a huge head-start becoming interoperable. I believe this standardised storage format should be WKT, within the Geo module. Storing lat/longs as numerics doesn't allow more sophisticated functionality such as defining paths and areas (it allows only for storage of points), or proximity searches etc whereas I understand that WKT (in MySQL) can do this (right?)
Jeff h
Geo is spatial
I encourage you to have a look at the presentation on Geo from DCDC, which provides a decent overview of what Geo is and is not.
Basically, Geo stores point, line and polygon data in databases that support spatial extensions. The most feature-rich solution is PostgreSQL, but the version of MySQL you've already got running support spatial extensions as well. The Geo module acts as a bridge between those databases and Drupal. It also provides the capacity to import shape data from public sources and use it to contextualize your Drupal content. There's the beginnings of documentation here, and we're all really interested in getting help with that so that we can spend more time working on geo than on describing what it does :)
WKT is a text format. It's cumbersome, not easily indexable, and often incompatible with how you want to use data. It is, however, a good language to transmit data around with, which is why it's used to input data into Geo.
As for outputting information, Geo provides a binary parser that can finagle its spatial data into just about anything. Bec's work on the GMAP Geo module shows how geo data can be retrieved into array format for use by a CCK field formatter. Geo ships with Views outputs in SVG and KML, which also use the binary parser.
I agree with others in this thread that it's less important couple our efforts loosely, focusing on areas of core competency. The abstraction we need for a "centralized solution" already comes from Views and CCK, so we'll get close to what we need by writing CCK input widgets, CCK output formatters, Views style plugins, and helper modules.
The part that feels the most difficult is ensuring that Geo is stable and well-supported. We absolutely don't want to create something half-baked, and we'd really like to finish what we've started! A strong Geo module is a strong glue for everyone else's efforts. Advantage Labs has almost all of the development on Geo "off the clock", and despite interest at DrupalCON, we haven't locked on additional funding. We've been denied for several grant applications - while putting dots on maps looks cool and is easily funded, proving a storage mechanism to collect, store, search data, and provide data in an open data format for other sites - is more esoteric.
Many have suggested that the can code/learn to code in order to help out with Geo, but we're really hoping we can find a way to get some of the architectural/heavy-lifting polished out beforehand. Explaining the module, explaining the architecture and design goals, vetting patches, and providing support and followup is just not something we can do sustainably right now.
But we're optimistic! We'll be launching a grassroots campaign for funding and participation during the coming weeks, and rallying around our Roadmap to a 1.0 release. Please stay tuned here, or contact us directly if you'd like to participate in the planning and execution.
Thanks for the Input
Thanks everyone for the input (and no need to stop).
As far as a centralized mapping solution, most folk don't think this is a great or sustainable idea. I was always on the fence about the issue, but had just gotten frustrated by such separated efforts to do a lot of the same things. I think the general idea of modular architecture (switching out maps) is a positive movement to make.
Some common themes I picked up from this discussion:
I am not sure if another thread should be made for these topics, but here are some of my suggestions or encouraging support for already good ideas on how to move these things along.
I really want to see Drupal become the GeoCMS that Bdragon has helped layout, but unless someone gets a whole lot of money to make it happen, I don't think the Drupal GeoCMS will happen in the near future without a coordinated community effort.
Thanks for your hard work. Please feel free to criticize.
--
zzolo
zzolo.org
--
zzolo
Official channel
Talk to chx about that.
Michelle
See my Drupal articles and tutorials or come check out the Coulee Region
And Another One
http://drupal.org/project/gmaps
It even is using a way too similar short module name.
zzolo
zzolo.org
--
zzolo
i have a dream
hello
i totally agree with this post and hope that a standardized solution will be done
im not a geo user but i think that a lot of infos are still the same and can be shared between modules
i would like to use a module for mapping google and yahoo but i need to test all of them......
i would like to implement the new secondlife mapping system but wich module should i use to depend on ?
i would like to see a common api module as an entrance door to speak to any geo mapping module
like this, anyone would be able to build its own mapping module but other developers needing to use them on dependencies would not have problems to test a lot of modules to choose one
Another one: nodemap
I think nodemap is a good module, expecially the GUI part and the fact that it tries to work with both Yahoo and Google APIs.
About this discussion, I really want to broaden it up a little bit and put it in my perspective, that is the perspective of a "user" of Drupal, not a contributor really.
I think that, for very complex modules, integration with geocoding APIs is a good example, a centralised Drupal solution should be better. The effort required for developing and maintaining these complex modules is not really manageable by individuals working in spare time, joining forces is badly needed IMO.
I am a fan of Drupal, that I use for my projects since Drupal 4
I noticed that, while the transition from D4 to D5 was smooth and promising and really exciting, there is something wrong in the transition from D5 to D6: lot of module projects looks... let me say a bad word... neglected? I did not take part to any discussion about this issue, I take the chance now to talk about in this topic, but from a user perspective this is quite evident, you need just to browse the modules list and to me the mapping modules are a poster child of this situation.
Survival of the fittest may be good idea, but if the target-effort is too high then? What if no one survives?
Today I did a search about Joomla mapping modules: it is evident that they are quite ahead of any D6 module I was able to find and test. I do not know much about that world, but maybe their modules development policy is different in some useful way.
Just my 2 cents
After starting a personal
After starting a personal project that required multiple unique mapping features, I quickly realized that this discussion is really about a three headed monster.
The first is storage, which Allie is making a great start on, albeit hindered by the state of MySQL geo support. The only negative is that I found it easier to manually handle the data storage myself that to tie into the framework. I didn't need view support, so it was trivial to handle the storage / queries myself. Things are always so much easier bypassing a couple layers of abstraction. :)
The second is data interface and this is where I find that, as a general rule, the more modules implementing different mechanisms the better. A CCK / View based solution will cripple the performance of a high performance FAPI based site, but this is what is required for the Newbie personal blogs. I would imagine that most sites would only require one or two different interfaces here, so bloating a module with multiple methods seems to add unnecessary overhead and complications IMHO. The fairly new GMap Blocks module provides the required functionality if over 98% of our clients, when coupled with a simple custom insert gmap_block filter (the beta 4 version has a fatal installation error, use beta 3 or correct the schema in the installation file if you want to play with it).
The last is the presentation. It is at this level that I think that we can make a huge step forward in unifying duplicate efforts. How many modules out there have an interface for the Google Mapping API key, 10, 20? Probably more like 30 or 40! As Mapstraction shows, it is not that hard to create a general wrapper for the common functionality required. A WYSIWYG project for map rendering. Has anyone made an attempt at this?
The big question is the adapter interface between these. Maybe just a simple node / edge model as this would be trivial to implement and there is no real learning curve required. Without that much domain knowledge here, I would not really see the need for many modules implementing the second / third steps to have to know much about spatial ref. system ids or having to parse special formats (KML, WKT, etc). How many of the 20,000 GMap users have more that just a couple of lat/lng points defined?
Anyway, just my 2 cents.
As a site builder, not a developer...
The number of mapping modules is frankly overwhelming. I am tearing out my hair trying to figure out which to use, and installing and testing different modules with their different interfaces and different ways of storing data (WKT, Location CCK fields, node locations...). Ahh! So, for the sake of the user, a centralized solution for as much of this as overlaps would be very, very, nice.
Just my thoughts. I'm dependent on all the hard work done by you guys, and I appreciate it very much. Keep up the good work.
Another perspective
A weakness of this approach is that feature overlap and sparse documentation can make it difficult for the site builder to choose. For me, and ideal world would be an umbrella API / sub-module model.