如何在 django-leaflet 传单地图中表示 Geodjango 模型?
How to represent Geodjango model in a django-leaflet leaflet map?
在我的 Django 应用程序中,我使用的是 Geodjango、django-leaflet 和 leaflet-ajax。我有一个带有 LineStringField 的路线模型。我想使用传单地图在模板中呈现该路线。我已经在其他模型(那些有 Point 字段的模型)上尝试了以下代码。但出于任何原因,此代码不适用于 RouteModel。传单地图什么也没显示。我如何将该路线添加到“gis”传单地图
这是模型定义
from django.contrib.gis.db import models
class RouteModel(models.Model):
name = models.CharField(verbose_name=_("Nombre"), max_length=50, blank=False, null=False)
route_type_id = models.ForeignKey("RouteTypeModel", verbose_name=_("Tipo"),
blank=True, null=True, on_delete=models.SET_NULL,
related_name="routes")
start_date = models.DateField(verbose_name=_("Fecha inicio"))
end_date = models.DateField(verbose_name=_("Fecha fin"))
route_geom = models.LineStringField(verbose_name=_("Ruta"), srid=4326)
def __str__(self):
return self.name
class Meta:
db_table = 'riesgo_route'
managed = True
verbose_name = _('Ruta')
verbose_name_plural = _('Rutas')
这是 ajax 视图:
@login_required(login_url='/login/')
def route_get_location(request,pk):
route=serialize('geojson',RouteModel.objects.filter(id=pk))
return HttpResponse(route,content_type='json')
urlpatterns = [
# url definitions
path('ruta/localizar/<str:pk>', route_get_location, name='route_locate'),
]
并且在模板中:
{% leaflet_map "gis" callback="window.our_layers" %}
<script type="text/javascript">
function our_layers(map,options){
//var datasets= new L.GeoJSON.AJAX("{% url 'mailapp:polygon_get_location' %}" ,{});
var datasets= new L.GeoJSON.AJAX("{% url 'riesgo:route_locate' route.id %}" ,{});
datasets.addTo(map);
}
</script>
我刚发现问题:我在另一个文件中有一个 route_get_location 函数的副本。所以这个 post 是一个如何使用 django-leaflet 和 leaflet-ajax
表示 Geodjango 模型的工作示例
在我的 Django 应用程序中,我使用的是 Geodjango、django-leaflet 和 leaflet-ajax。我有一个带有 LineStringField 的路线模型。我想使用传单地图在模板中呈现该路线。我已经在其他模型(那些有 Point 字段的模型)上尝试了以下代码。但出于任何原因,此代码不适用于 RouteModel。传单地图什么也没显示。我如何将该路线添加到“gis”传单地图
这是模型定义
from django.contrib.gis.db import models
class RouteModel(models.Model):
name = models.CharField(verbose_name=_("Nombre"), max_length=50, blank=False, null=False)
route_type_id = models.ForeignKey("RouteTypeModel", verbose_name=_("Tipo"),
blank=True, null=True, on_delete=models.SET_NULL,
related_name="routes")
start_date = models.DateField(verbose_name=_("Fecha inicio"))
end_date = models.DateField(verbose_name=_("Fecha fin"))
route_geom = models.LineStringField(verbose_name=_("Ruta"), srid=4326)
def __str__(self):
return self.name
class Meta:
db_table = 'riesgo_route'
managed = True
verbose_name = _('Ruta')
verbose_name_plural = _('Rutas')
这是 ajax 视图:
@login_required(login_url='/login/')
def route_get_location(request,pk):
route=serialize('geojson',RouteModel.objects.filter(id=pk))
return HttpResponse(route,content_type='json')
urlpatterns = [
# url definitions
path('ruta/localizar/<str:pk>', route_get_location, name='route_locate'),
]
并且在模板中:
{% leaflet_map "gis" callback="window.our_layers" %}
<script type="text/javascript">
function our_layers(map,options){
//var datasets= new L.GeoJSON.AJAX("{% url 'mailapp:polygon_get_location' %}" ,{});
var datasets= new L.GeoJSON.AJAX("{% url 'riesgo:route_locate' route.id %}" ,{});
datasets.addTo(map);
}
</script>
我刚发现问题:我在另一个文件中有一个 route_get_location 函数的副本。所以这个 post 是一个如何使用 django-leaflet 和 leaflet-ajax
表示 Geodjango 模型的工作示例