跳转到主要内容

此应用程序使得在给定的地址上显示地图变得容易。

项目描述

django-easy-maps

此应用程序使得在 django 模板中显示任何给定地址的地图变得容易。无需手动地理编码、html/js复制粘贴或Django模型更改。

Mikhail Korobov 编写,以及一些优秀的 贡献者

https://img.shields.io/pypi/v/django-easy-maps.svg https://img.shields.io/pypi/dm/django-easy-maps.svg https://img.shields.io/github/license/bashu/django-easy-maps.svg https://img.shields.io/travis/bashu/django-easy-maps.svg

安装

首先安装模块,最好在虚拟环境中。可以从PyPI安装

pip install django-easy-maps

设置

您需要将 easy_maps 添加到项目 settings.py 文件中的 INSTALLED_APPS

INSTALLED_APPS += [
    'easy_maps',
]

然后运行 ./manage.py migrate 以创建所需的数据库表。

配置

唯一必需的配置是 EASY_MAPS_GOOGLE_KEY 变量。

EASY_MAPS_GOOGLE_KEY = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___0123456789'

如果您需要在没有插入地址的情况下将地图居中的位置,请将纬度和经度添加到您的 settings.py 文件中的 EASY_MAPS_CENTER 变量,如下所示

EASY_MAPS_CENTER = (-41.3, 32)

其他可选设置

# Optional
EASY_MAPS_ZOOM = 8  # Default zoom level, see https://developers.google.com/maps/documentation/javascript/tutorial#MapOptions for more information.
EASY_MAPS_LANGUAGE = 'ru'  # See https://developers.google.com/maps/faq#languagesupport for supported languages.

请参阅示例应用程序。该应用程序用于手动测试此包的功能。它也是一个很好的示例。

您需要 Django 1.8 或更高版本才能运行。它可能在旧版本上运行,但未经过测试。

用法

首先,在您想使用的地方的每个模板中加载 easy_map_tags

{% load easy_maps_tags %}

使用

{% easy_map <address> [<width> <height>] [<zoom>] [using <template_name>] %}

例如

{% load easy_maps_tags %}

<!-- Default map with 300x400 dimensions -->
{% easy_map "Russia, Ekaterinburg, Mira 32" 300 400 %}

<!-- Variable address, custom detail level and custom template -->
{% easy_map address 200 200 5 using "map.html" %}

地图坐标将在首次访问时使用 Google 地理编码器获取。然后它们将被缓存在数据库中。可以使用 Django 模板缓存来防止在每次渲染地图时访问数据库

{% load easy_maps_tags cache %}

{% cache 600 my_map firm.address %}
    {% easy_map firm.address 300 400 %}
{% endcache %}

模板

如果默认地图模板不足够,则可以使用自定义地图模板。例如

{% easy_map address using "map.html" %}
{% easy_map address 200 300 5 using "map.html" %}

模板将具有 map(首次访问时自动创建 easy_maps.Address 实例,用于传递的地址),widthheightzoom 变量。外部模板上下文也传递给渲染的模板。

您可以从头开始创建自己的模板,或者只需覆盖默认模板中的某些块。

有关详细的 Google Maps JavaScript API 帮助,请参阅 https://developers.google.com/maps/documentation/javascript/

小部件

django-easy-maps 提供了一个基本的小部件,该小部件可以在地址字段下方显示地图。它可用于管理地图预览。例如

from django import forms
from django.contrib import admin

from easy_maps.widgets import AddressWithMapWidget

from .models import Firm

class FirmAdmin(admin.ModelAdmin):
    class form(forms.ModelForm):
        class Meta:
            widgets = {
                'address': AddressWithMapWidget({'class': 'vTextField'})
            }

admin.site.register(Firm, FirmAdmin)

address 字段应该是 CharFieldTextField

贡献

如果您发现了错误,实现了功能或自定义了模板,并认为它很有用,那么请考虑做出贡献。补丁、拉取请求或只是建议都受欢迎!

许可证

django-easy-maps 采用 MIT 许可证发布。

支持者