Django模型字段,它可以保存一个地理位置,以及相应的管理小部件。

django-geoposition的Python项目详细描述


可以保存地理位置(纬度/经度)和相应管理/表单小部件的模型字段。

https://badge.fury.io/py/django-geoposition.svghttps://travis-ci.org/philippbosch/django-geoposition.svg?branch=masterJoin the chat at https://gitter.im/philippbosch/django-geoposition

先决条件

从0.3版开始,django geopposition需要django 1.8或更高版本。 如果您需要支持1.8之前的django版本,请使用django geopposition 0.2.3。 对于1.4.10之前的django版本,请使用django geopposition 0.1.5。

安装

  • 使用您喜爱的python打包工具安装geoposition 来自PyPI,例如:

    pip install django-geoposition
    
  • "geoposition"添加到INSTALLED_APPS设置:

    INSTALLED_APPS = (
        # …
        "geoposition",
    )
    
  • 在设置文件中设置google api密钥:

    GEOPOSITION_GOOGLE_MAPS_API_KEY = 'YOUR_API_KEY'
    

    api密钥可以在这里获得:https://developers.google.com/maps/documentation/javascript/get-api-key

  • 如果您仍在使用django<;1.3,建议您安装 django-staticfiles用于静态文件服务。

用法

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 myapp.models import PointOfInterest
    >>> poi = PointOfInterest.objects.get(id=1)
    >>> poi.position
    Geoposition(52.522906,13.41156)
    >>> poi.position.latitude
    52.522906
    >>> poi.position.longitude
    13.41156
    

表单域和小部件

管理

如果在管理中使用GeopositionField,它将自动 在当前存储的 位置。您可以使用鼠标和 相应的纬度和经度字段将被更新 因此。

看起来是这样的:

geoposition-widget-admin

正则形式

在管理之外的常规表单上使用map小部件需要 再做一点工作。在模板中确保

  • jQuery包括在内
  • map小部件的静态文件(js,css)包括在内(只需使用 {{ form.media }}

示例

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<form method="POST" action="">{% csrf_token %}
    {{ form.media }}
    {{ form.as_p }}
</form>

设置

您可以自定义用于初始化 通过定义GEOPOSITION_MAP_OPTIONSGEOPOSITION_MARKER_OPTIONS在您的settings.py中。

示例

GEOPOSITION_MAP_OPTIONS = {
    'minZoom': 3,
    'maxZoom': 15,
}

GEOPOSITION_MARKER_OPTIONS = {
    'cursor': 'move'
}

请注意,不能使用类似^{tt11}的值$ 对于像centerposition这样的设置,因为这最终会成为 javascript代码中的字符串,不进行计算。请使用 Lat/Lng Object Literals为此目的,例如{'lat': 52.5, 'lng': 13.4}

还可以通过设置自定义显示的地图小部件的高度 GEOPOSITION_MAP_WIDGET_HEIGHT为整数值(默认值为480)。

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Windows 7 64位上运行Jive Dev Enrivoment的java   Java/C/C++/C#/PHP到Pascal的转换器?   java将字符串列表转换为单个对象   java SimpleAdapter,spinner中的文本和图像   java当客户端返回时,有状态会话bean如何恢复状态?   JavaWebLogic。jdbc。包装纸。无法将数组\u oracle\u sql\u数组强制转换为oracle。sql。大堆   java MySQL/Hibernate检索列映射为LocalTime的错误数据   java如何检测页面中是否包含句子(模糊)?   java如何在springboot框架中验证wsdl   JTextPane中的java双列表项插入   java根据窗口大小调整JScrollPane的大小   sql如何在java中映射VARCHAR2(5)的类型表?   用于生成Cron表达式的java类型转换   如何将基于spring注释的Hibernate代码迁移到JavaEE   java对象作为参数?   JavaSeleniumWebDriver:在许多输入中设置值的更快方法