Need a simple Google Maps solution; lost in the labyrinth of modules First of all, let me just state that I don't care which version of Drupal I'd have to use (6 or 7). I have experience with both versions I just didn't need to work with Google Maps till now. The requirements are pretty basic (from what I understand):

1) Have a node for every company that I want to add in the map

2) In the node edit form I would like to add an address and have it added in a custom google map (or maybe copy-paste the link of a google map location)

3) Have a search function to find the nearest company for a given location

There are like tons of different modules out there, and I would like to be pointed to the right direction instead of looking through 15+ different modules just to finally realize that I need to write a custom module for myself. 

Thanks in advance.
I have created a Drupal feature that implements this using OpenLayers ( See http://drupal.org/project/ol_locator ) or you can use the following walk-through to set up your own.


Download and enable the following Modules:


OpenLayers   
OpenLayers Proximity
Chaos tools  
Views    
Address Field    
Geocoder API 
Geofield
geoPHP
Libraries

Enable sub-modules:


Geofield Map  7.x-1.0-alpha5
Views UI  7.x-3.0-rc1
OpenLayers UI 7.x-2.0-alpha2
OpenLayers Views  7.x-2.0-alpha2

Go to admin/structure/types/add and create new content type called "Location"
Go to admin/structure/types/manage/location/fields and add the following fields:


Label: Address > Field name: address > Field type: Postal address > Widget: Dynamic address form

Select which available countries you would prefer from the list. Leave blank to allow all of them.
Check off "Address form (country-specific)"


Note: The countries and their associated fields are handled by the Addressfield module. If you do not see your country or if it does not have the appropriate fields you need to file an issue with that module http://drupal.org/project/addressfield (Check to see if there is an issue in the queue about your missing country first before posting)

Label: Geofield > Field name: geofield > Field type: Geofield > Widget: Geocode from another field
Go to admin/structure/types/manage/ol_locator_location/display and change the Default display for Geofield: 


Label: Hidden > Format: OpenLayers 

Click on gear icon and select the following:


OpenLayers Preset: Geofield Formater Map > Data options: Use full geometry

Go to admin/structure/openlayers/layers/settings and set the following:


Google Maps API version: v3.2

Let's test to see if the Geocoding is working by creating a Test Location


When creating a test content type, make sure you are using a well established address. If Google doesn't know about your address, then neither will your new site.

Go to admin/structure/views/add and create a new view with the following information


View name: Proximity Search > Description: Displays geocoded locations on a dynamic map for users to do proximity searches. > Show: Content of type: Location sorted by: Unsorted > Continue &amp; edit

Add the following fields and keep their default values, except where noted:


Content: Title > Check off Create a label: "Title"
Content: Address (Address)
Content: Geofield (Geofield) > Exclude from display
Proximity: Distance (Distance) 

Add the following Filter Criteria to the existing:


Content: Published (Yes) and 
Content: Type (= Location)
Proximity: Great-circle (exposed) > Expose this filter to visitors, to allow them to change it > Label: Proximity > add "10" to Value field > Unlock unit of measurement > Unlock location

Header > Global:Text area > Display even if view has no result 


"Find a location near you. You can search using your city, province/state or a postal/zip code."

No results behavior > Global: Text area and add the following:


"Sorry, no results found.
1.) Verify the accuracy of your postal/zip code
2.) Check the spelling of your city, province or state
3.) Increase the proximity distance"

Submit button text: Search
Add new display: "OpenLayers Data Overlay"
Format: 


Settings >  Apply this openlayers (override) > Map Data Sources: WKT > WKT Field: Geofield > Description Field >  > Apply (this display)

Save the view
Go to admin/structure/openlayers/maps
Clone the default map
General information > Name: location_map . Title: Location Map > Map Description: This is the default location map.
Layer &amp; styles > Overlay layers (select the view we just created) Locations "Enabled" "Activated" Do the same for Placeholder for Geofield Formatter
Behaviours > Pop Up (have to come back and "Select layer to apply popups to." later) > Zoom to Layer "Select layer to zoom to when the map is loaded" > Point Zoom Level : 20 ****
Save the map
Go back to the view we just created


admin/structure/views/view/proximity_search/edit

Add display "Page"


Path: /locator
Format: OpenLayers Map > Apply (this display) > Map: Locations Map (The one we just created in OpenLayers) > Apply

Save the view (We should now see our map in the preview pane at the bottom of our view, with any test content
Add display: "attachment"


Format: Table > Apply (this display)
Attach to: Page 
Inherit exposed filters: Yes
Remove the Header > Global: Text area > Apply (this display) 
Items to display: Display a specified number of items | 5 items 
Inherit pager: Yes
Render pager: Yes 

Save View
Behaviours > Pop Up > Layers > proximity_search_openlayers_1 (The views Openlayers map we just created)
Zoom to Layer > Zooms to the extent of a given layer on map loading. > proximity_search_openlayers_1
Return back to admin/structure/types/manage/location/display > click gear icon and change Open Layers Preset to the Location Map that we just created > Update > Save


Voila! Done