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,
}
),
)
我有以下表单域
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,
}
),
)