Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用django geojson从点生成stringline_Javascript_Python_Django_Leaflet_Geojson - Fatal编程技术网

Javascript 如何使用django geojson从点生成stringline

Javascript 如何使用django geojson从点生成stringline,javascript,python,django,leaflet,geojson,Javascript,Python,Django,Leaflet,Geojson,根据我的django模型,我有带有geojson字段的TravelPoint模型 但我想从点到点的旅行中画一条线。路线模型 # coding: utf-8 from djgeojson.fields import PointField, LineStringField from django.db import models from ckeditor.fields import RichTextField class TravelPoint(models.Model): na

根据我的django模型,我有带有geojson字段的TravelPoint模型 但我想从点到点的旅行中画一条线。路线模型

# coding: utf-8

from djgeojson.fields import PointField, LineStringField
from django.db import models
from ckeditor.fields import RichTextField



class TravelPoint(models.Model):

    name = models.CharField(max_length=255)
    geom = PointField()
    description = RichTextField()

    def __unicode__(self):             
        return unicode(self.name)

    @property
    def popupContent(self):
      return '<h3>{}</h3><p>{}</p>'.format(
          self.name.encode('utf-8').strip(),
          self.description.encode('utf-8').strip())


class TravelRoute(models.Model):
    geom = LineStringField()
我会考虑定义一些抓取点的方法,并将其放在geojson行字段中,但我的知识贫乏阻止了我

另一种在javascript中画线的方法,但也很难理解

在模板中:

<script type="text/javascript">

    var collection = {{ points|geojsonfeature:"popupContent"|safe }};

    function onEachFeature(feature, layer) {
        if (feature.properties && feature.properties.popupContent) {
          layer.bindPopup(feature.properties.popupContent);
        }
    }

    function map_init(map, options) {
        L.geoJson(collection, {onEachFeature: onEachFeature}).addTo(map);



    }
</script>

在我看来,您违反了一些Django MVC规则:您有一个返回HTML的方法/属性,最好使用Django视图

关于您的JS/Python代码,我将分两步完成:

首先,在Django中实现一个视图,该视图使用HttpResponse返回geojson负载,并在Django 1.7中指定mimetype或使用JsonResponse 第二,在JS中,使用Ajax从以前实现的Django视图获取响应,然后在JS回调函数中调用L.geoJson