Drupal is an amazing tool for mapping. It integrates with a lot of libraries, technologies and third party services. There are solutions for simple maps but also for complex mapping needs.
With mapping there isn't one ideal solution, because it depends of the project. Although, there is always a path: input > storage > process > output, some modules may provide more than one of these steps.
If you start mapping with Drupal, you will most likely use a combination of modules to achieve your goal. The documentation section contains a description of main modules to help you on your selection.
Widely used approaches
There are several approaches:
- Location (D6, D7) & Gmap (D6, D7)
- Geofield & OpenLayers or Leaflet (all D7)
- PostGIS & OpenLayers
- Get Locations (Google Maps v3 solution for D6, D7), either by itself or with Geofield (D7) or Geolocation field (D7)
- one of Location, Geofield, Geolocation field, Get Locations or other contrib module in combination with the IP Geolocation Views and Maps rendering engine (all D7). Supports Google Maps v3 directly, as well as Leaflet and OpenLayers.
In Drupal 7, Address Field is now often used instead of Location as a storage back-end. Addressfield Autocomplete complements Addressfield by providing an user friendly autocomplete address search widget.
Which one to pick depends on the nature of the project (e.g the location data storage modules you may be committed to) and the level of skill you have with each technology. OpenLayers supports a number of map providers (including Google Maps), so gives you a lot of flexibility. However, this comes at the expense of more complexity in configuration.
Geofield is currently the standard for storing geo data. It can be used as a stand alone solution for simple projects as it provides the input (unlike Location, it accepts points, lines, polygons), storage and display (when used with Views). But if you want more complex displays, it can be integrated with Geocoder, or libraries like Openlayers and Leaflet.
When a deep handle geospatial data is needed, the PostGIS module is used. To the end user this module is similar to Geofield, but spatial operations and data storage rely on PostGIS. This module has a good integration with the OpenLayers, OpenLayers Editor and the GeoServer modules. With the PostGIS module, spatial data are stored as true geometric data types like POINT, LINE, POLYGON and more. This allows for high performance spatial queries and analyses and guarantees data integrity through a whole range of possible spatial validations.
If your geographical data can be captured as a Views table, which is almost always the case, then IP Geolocation Views and Maps is a very versatile solution, connecting your choice from any of the main geo storage modules to your choice of one of the three map rendering packages (Google, OpenLayers and Leaflet). This allows you to pick and mix as you please without lock-in.
Drupal 6 vs. 7
As can be seen from the list above, there are differences between the available modules for Drupal 6 and Drupal 7. On one hand because the technology is outdated, on the other because more flexible solutions appeared. Web mapping is an area that is in constant motion.