Skip to main content

Google Maps widget for django-fluent-contents

Project description

https://img.shields.io/travis/edoburu/fluentcms-googlemaps/master.svg?branch=master https://img.shields.io/pypi/v/fluentcms-googlemaps.svg https://img.shields.io/pypi/l/fluentcms-googlemaps.svg https://img.shields.io/codecov/c/github/edoburu/fluentcms-googlemaps/master.svg

fluentcms-googlemaps

A plugin for django-fluent-contents to show a Google Maps widget on a website.

This plugin is a work in progress. It’s already used in production, just know that there are two main area’s that need improval:

  • Use a better GeoPosition widget (e.g. by using a lightbox/popup)

  • Make cluster icons configurable.

Installation

First install the module, preferably in a virtual environment. It can be installed from PyPI:

pip install fluentcms-googlemaps

NOTE: On Django 1.11, you’ll have to install the following package first:

pip -e git+https://github.com/philippbosch/django-geoposition.git@django-1.11#egg=django-geoposition

Since django-geoposition doesn’t have a Django 1.11 compatible release yet.

Backend Configuration

First make sure the project is configured for django-fluent-contents.

Then add the following settings:

INSTALLED_APPS += (
    'geoposition',
    'fluentcms_googlemaps',
)

GOOGLE_MAPS_API_KEY = None  # Might be needed to define this.

Add the following to urls.py:

urlpatterns = [
    ...

    url(r'^api/googlemaps/', include('fluentcms_googlemaps.urls')),
]

The database tables can be created afterwards:

./manage.py migrate

Now, the MapPlugin can be added to your PlaceholderField and PlaceholderEditorAdmin admin screens.

Frontend Configuration

Make sure that all plugin media files are exposed by django-fluent-contents:

{% load fluent_contents_tags %}

{% render_content_items_media %}

This tag should be placed at the bottom of the page, after all plugins are rendered. For more configuration options - e.g. integration with django-compressor - see the template tag documentation.

CSS Code

The stylesheet code is purposefully left out, since authors typically like to provide their own styling.

JavaScript Code

No configuration is required for the JavaScript integration.

By default, the plugin includes all required JavaScript code.

If needed, the includes resources can be changed by using the following settings:

MAP_MARKERWITHLABEL_JS = "fluentcms_googlemaps/vendor/markerwithlabel.js"
MAP_MARKERCLUSTERER_JS = "fluentcms_googlemaps/vendor/markerclusterer_compiled.js"
MAPPLUGIN_JS = "fluentcms_googlemaps/js/mapplugin.js"
MAPSEARCH_JS = "fluentcms_googlemaps/js/mapsearch.js"

FLUENTCMS_GOOGLEMAPS_JS = (
    MAP_MARKERWITHLABEL_JS,
    MAP_MARKERCLUSTERER_JS,
    MAPPLUGIN_JS,
)

FLUENTCMS_GOOGLEMAPS_CSS = {}

If a value is defined as None, it will be excluded from the frontend media.

HTML code

If needed, the HTML code can be overwritten by redefining fluentcms_googlemaps/maps/default.html. Also, you can create additional map styles and define these in FLUENTCMS_GOOGLEMAPS_STYLES. The default is:

FLUENTCMS_GOOGLEMAPS_STYLES = (
    ('default', {
        'title': _("Default"),
        'template': "fluentcms_googlemaps/maps/default.html",
    }),
    ('search', {
        'title': _("Search field"),
        'template': "fluentcms_googlemaps/maps/search.html",
        'extra_js': (
            MAPSEARCH_JS,   # = "fluentcms_googlemaps/js/mapsearch.js" unless MAPSEARCH_JS is redefined
        ),
    }),
)

By default, the following templates are looked up:

  • A explicitly defined template option in the FLUENTCMS_GOOGLEMAPS_STYLES.

  • A template named: fluentcms_googlemaps/maps/{style}.html.

  • The default; fluentcms_googlemaps/maps/default.html.

Importing data

Marker data can be imported from CSV files, and receive geocoding too. The import_markers command can be called with custom templates to map the CSV file data to marker fields. For example:

manage.py import_markers /stores.csv  --title='{{Name}}' --group=1 --geocode='{{Address}} {{Zipcode}} {{City}} {{County}}' --geocoder=google --description="<p>{{Address}}<br>{{Zipcode}} {{City}}<br>{% if County == 'NL'%}The Netherlands{% else %}{{County}}{% endif %}</p>"

It’s recommended to add --dry-run first until all fields are properly filled. The markers are created in a single transaction at the end of all parsing.

Contributing

If you like this module, forked it, or would like to improve it, please let us know! Pull requests are welcome too. :-)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluentcms-googlemaps-1.3.tar.gz (54.8 kB view details)

Uploaded Source

Built Distribution

fluentcms_googlemaps-1.3-py2.py3-none-any.whl (71.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file fluentcms-googlemaps-1.3.tar.gz.

File metadata

File hashes

Hashes for fluentcms-googlemaps-1.3.tar.gz
Algorithm Hash digest
SHA256 27c5b02cb55a5415d3d32bd6cdd7f1d590db579bc42522f2154c4818dff0b06e
MD5 dad8622544bf9f3e4e3fe6f0c6a08108
BLAKE2b-256 1c8d325d229afd5c4014d56118a0abfe7007383403429e001125610631ad172d

See more details on using hashes here.

File details

Details for the file fluentcms_googlemaps-1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for fluentcms_googlemaps-1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fb55020e18d2425f6763e1773238a23777551fd4651b2b119fb07778d4b075e0
MD5 08f695fbd3efc474059ee170d1b25faf
BLAKE2b-256 e0b653ea18ec4fc1c16b1eecef6ff6ce9ac48a6277420de8cae972322d44f2ac

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page