OSMWidget Django 表单位置坐标不正确

OSMWidget Django form location coodinates are incorrect

我有以下表单域

point = gis_forms.PointField(widget=gis_forms.OSMWidget(
                            attrs={'map_width': 800,
                                   'map_srid': 4326,
                                   'map_height': 500,
                                   'default_lat': 49.246292,
                                   'default_lon'-123.116226,
                                   'default_zoom': 7,}))

表单在 django 中呈现为

<form method="post">
  {% csrf_token %}
  {{ form|crispy }}
  <button type="submit">Submit for Review</button>
</form>

但是当数据进入时 POST 位置不正确。

def register_storage(request):
    if request.method == 'POST':
        form = MyGeoForm(request.POST)
        if form.is_valid():
            data=form.cleaned_data
            print(data.get('point'))
            print(data.get('point').srid)

SRID 显示为 3857 和奇怪的默认坐标 -13645232.541356523 6283123.725041488

我以为是我的 django 版本,但由于 GDAL 的某些功能,它已更新到 3.1.3。但是运气不好。

在这里很迷茫。

您必须在表单字段中明确定义 SRID。我不确定为什么会这样(你会认为它会像 Django/GeoDjango 的其余部分一样默认为 4326),但它似乎就是这样。您的代码应为:

point = gis_forms.PointField(
    srid=4326,
    widget=gis_forms.OSMWidget(
        attrs={
            "map_width": 800,
            "map_srid": 4326,
            "map_height": 500,
            "default_lat": 49.246292,
            "default_lon": -123.116226,
            "default_zoom": 7,
        }
    ),
)