1

有人知道用floppyforms.gis.BaseGMapWidget设置默认缩放和纬度/经度的简单方法吗?此外,在创建条目时,将平移设置为默认工具。

以我定义的形式:

class PointWidget(floppyforms.gis.PointWidget, floppyforms.gis.BaseGMapWidget):
    map_width = 690
    map_height = 300

class EventForm(ModelForm):
    class Meta:
        model = Event
        widgets = {
            'coordinates': PointWidget(),
        }

这完美地显示了地图小部件,我可以设置一个点。在为现有条目加载表单时,它还可以很好地居中和缩放该点。但是当显示表单以创建一个新条目时,它以非洲西部成本为中心。

有没有办法实现这一点(最好通过在表单/小部件类中定义而不使用额外的 javascript)。

4

1 回答 1

3

首先,覆盖get_context_data()您的小部件类并将其指向自定义模板:

class PointWidget(floppyforms.gis.BaseGMapWidget, floppyforms.gis.PointWidget):
   template_name = 'custom_lonlat.html'
   default_lon = 'something'
   default_lat = 'something'

   def get_context_data(self):
       ctx = super(PointWidget, self).get_context_data()
       ctx.update({
           'lon': self.default_lon,
           'lat': self.default_lat,
       })
       return ctx

然后创建custom_lonlat.html模板:

{% extends "floppyforms/gis/google.html" %}

{% block options %}{{ block.super }}
options['default_lon'] = {{ lon }};
options['default_lat'] = {{ lat }};
{% endblock %}

如果你想使默认的 lon/lat 动态,你可以从你的视图代码中直接在表单实例上设置它们:

form = EventForm()
form.fields['coordinates'].widget.default_lon = 'something'
form.fields['coordinates'].widget.default_lat = 'something else'

我是 floppyforms 的作者,我已经看过这个问题几次了……我很快就会把这个答案添加到官方文档中。

于 2012-06-12T13:37:51.883 回答