Adding a geolocation behavior

I want to create a rather complex address field/widget with informations about Country, State, Region, Zip, Placename

It should work like that:

  • As it should only be possible to add addresses from one or more specific countries this should be predefined in the controlpanel.
  • A user can then enter one or more informations to a select widget with text input for Country, State, Region, Zip or Placename
  • All inputs should work bi-directional and change the others if one is entered
    1.) entering a zip code should update the Placename, Region, State and Country if valid
    2.) entering a Placename (in Austria we have plenty of the same in different regions and states - e.g. there are 123 "Hof" which is roughly translatable to "yard") it should reduce zips, regions, states where they are found/possible
    3.) entering a state reduces the lists of possible Regions, Zips and Placenames
    4.) and so on.
    5.) some sort of output (a map or a simple string for the presentation of the found location)

I found http://www.geonames.org, which has a json-api to grab those informations based on your entries.

What i want to achieve:

1.) A geolocation controlpanel to add:

  • your username (the one you registered at geonames)
  • Countr(y|ies) you want to be used
  • Fields you want to use (Country, State, Region, Zip, Placename)

2.) A dexterity behaviour to add upon contenttypes

  • which can use the general configuration from the controlpanel

  • or define its own per contenttype

  • indexable so one can search the catalog for content with a address (again: Country, State, Region, Zip, Placename)

  • The field widget inputs should be selfupdating selects with the ability to write text for filtering the existing list of entries. Not to add new entries. Only valid entries are supported.

Questions:
1.) is there already something similar?
2.) any experiences with geonames.org?
3.) is there already a widget i can use for autocomplete/filter
4.) shall i make it a "collective.behavior.geolocation" or a "plone.app.geolocationbehavior" package
5.) anyone able to help a little (pointing to docs, code samples, ...)?
6.) anyone interested in contributing? :wink:

Have you tested those?

For events I have created http://plone.org/products/collective.venue which uses
collective.geolocationbehavior and collective.address. It should be able
to be used for any content type, not only events. It does not do the
bidirectional update, but that should be fairly easy to implement. It
uses Leaflet as mall widget.

I found collective.geo.* to overblown for my use cases, but I have to admit that I don't have much experience with it.

1 Like

I agree. It brings in a little too many dependencies if your site doesn't revolve mostly around geolocated items.