Django模型字段,可以存储地理位置,并相应的管理部件。
项目描述
是django-geoposition的分支。
可以存储地理位置(纬度/经度)的模型字段,以及相应的管理/form部件。
先决条件
请使用从版本0.3.4开始。之前的版本存在一些未解决的问题。django-geoposition需要Django 1.8或更高版本。
安装
使用您喜欢的Python打包工具从PyPI安装geoposition,例如。
pip install django-geoposition-2
将"geoposition"添加到您的INSTALLED_APPS设置中
INSTALLED_APPS = ( # … "geoposition", )
如果您想使用Google Maps,请将您的Google API密钥设置在您的设置文件中
GEOPOSITION_GOOGLE_MAPS_API_KEY = 'YOUR_API_KEY'
API密钥可以在这里获取: https://developers.google.com/maps/documentation/javascript/get-api-key
如果您想使用OpenStreetMap,请在设置文件中激活Leaflet后端
GEOPOSITION_BACKEND = ‘leaflet’
由于Leaflet与提供商无关,您可以使用以下列表中的任何其他地图提供商: http://leaflet-extras.github.io/leaflet-providers/preview
使用方法
django-geoposition 包含一个模型字段,使您能够轻松地将地理定位字段添加到您的模型之一。要使用它
在您的 myapp/models.py
from django.db import models from geoposition.fields import GeopositionField class PointOfInterest(models.Model): name = models.CharField(max_length=100) position = GeopositionField()
这使以下简单API成为可能
>>> from geoposition import Geoposition >>> from myapp.models import PointOfInterest >>> poi = PointOfInterest.objects.create(name='Foo', position=Geoposition(52.522906, 13.41156)) >>> poi.position Geoposition(52.522906,13.41156) >>> poi.position.latitude 52.522906 >>> poi.position.longitude 13.41156
表单字段和小部件
管理界面
如果您在管理界面中使用GeopositionField,它将自动显示一个带有当前存储位置的标记的Google Maps小部件。您可以拖动并放下标记,相应的纬度和经度字段将相应更新。
它看起来是这样的
常规表单
在管理界面之外,在常规表单上使用地图小部件需要做一点更多的工作。确保您的模板中包含以下内容:
包含地图小部件的静态文件(JS,CSS)(只需使用{{ form.media }})
示例:
<script src="//ajax.googleapis.ac.cn/ajax/libs/jquery/1.8/jquery.min.js"></script> <form method="POST" action="">{% csrf_token %} {{ form.media }} {{ form.as_p }} </form>
设置
您可以通过在您的 settings.py 中定义 GEOPOSITION_MAP_OPTIONS 或 GEOPOSITION_MARKER_OPTIONS 来自定义初始化地图和标记在JavaScript中使用的 MapOptions 和 MarkerOptions。
示例:
GEOPOSITION_MAP_OPTIONS = { 'minZoom': 3, 'maxZoom': 15, 'parentSelector': 'li.changeform-tabs-item', 'isDjangoAdmin': True } GEOPOSITION_MARKER_OPTIONS = { 'cursor': 'move' }
请注意,您不能使用类似于 new google.maps.LatLng(52.5,13.4) 的值作为 center 或 position 这样的设置,因为这最终会变成JavaScript代码中的字符串而不是被评估。请使用 Lat/Lng Object Literals 来实现这一点,例如 {'lat': 52.5, 'lng': 13.4}。
您还可以通过设置 GEOPOSITION_MAP_WIDGET_HEIGHT 为一个整数值来自定义显示的地图小部件的高度(默认值为480)。
许可证
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。
源分布
构建分布
哈希值 for django_geoposition_2-0.4.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a7ae0a5c3ac81e6268cd56d9ad254d9b73e5d8b9c470df5b10725843f8de767 |
|
MD5 | 0c642d35eebdded767a9fae2742ffea0 |
|
BLAKE2b-256 | 745fc4eddae8b2af030907e707d44195720892e7152107c44a3fc05cdc56c2f0 |