如何使用django geojson从点开始制作stringline

时间:2015-03-26 08:21:37

标签: javascript python django leaflet geojson

根据我的django模型,我有带有geojson字段的TravelPoint模型 但我想从点到点绘制一个字符串线(Travel.Route模型)

# 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>

1 个答案:

答案 0 :(得分:0)

IMO,你打破了一些Django MVC规则:你有一个返回HTML的方法/属性,你最好使用django视图。

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

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