有人知道使用 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)。
答案 0 :(得分: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的作者,我已经看过几次这个问题......我会很快将这个答案添加到官方文档中。