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(),
        }

これは完全にマップウィジェットを示しており、ポイントを設定できます。また、既存のエントリのフォームをロードするときに、ポイントを適切に中央揃えおよびズームします。ただし、フォームを表示して新しいエントリを作成する場合は、アフリカの西側のコストが中心になります。

これを実現する方法はありますか(できれば、form / widget-classで定義し、追加の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 に答える