>

내 문제는 PostGIS에 저장된 다각형을 django를 사용하여 전단지 맵으로 시각화하는 방법을 모른다는 것입니다.

템플릿에서이 점을 사용하여 점을 그립니다 :

 <script type="text/javascript">
      function map_init(map, options) {
        {% for each_model in loca %}
          var lon =   {{each_model.location.x}}
          var lat =   {{each_model.location.y}}

          map.setView([lat, lon], 2);
          L.marker([lat, lon]).bindPopup("{{each_model.name}}").addTo(map)
          {% endfor %}
          // get point lat and lon
          // zoom to point & add it to map
        ;
      }
  </script>

models.py

from __future__ import unicode_literals
from django.contrib.gis.db import models
from django.contrib.gis.geos import Point

class Shop(models.Model):
    name = models.CharField(max_length=100)
    location = models.PointField()
    address = models.CharField(max_length=100)
    city = models.PolygonField()

{{loca.city}}를 인쇄하면 다음과 같이 GEOS 객체가 인쇄됩니다.

SRID=4326;POLYGON ((2.988282590688516 6............))

점을 그릴 때 다각형을 어떻게 그릴 수 있습니까?

업데이트 II :

Shop.object.all ()을 사용할 때 모델이 생성 한 내용 인쇄

<QuerySet [<Shop: Shop object (1)>, <Shop: Shop object (2)>, <Shop: Shop object (3)>, <Shop: Shop object (4)>]>

데이터베이스 테이블은 다각형과 점을 저장하는 모습입니다 (x, y)

보기에서 수동으로 쿼리를 사용하려고 생각했지만 작동하지 않았습니다 (cursor.execute ( "SELECT ST_AsText (city) FROM trial2_shop;)

이 코드 사용 :

{% for each_model in loca %}
{{each_model.name}} <br>
{% endfor %}

출력은 다음과 같습니다.

HELLO 
PARIS 
France 
abc

그리고 이것을 사용하십시오 :

{% for each_model in loca %}
{{each_model.city}} <br>
{% endfor %}

출력은 다음과 같습니다.

SRID=4326;POLYGON ((2.988282590688516 6.287501448673132, -2.724608033516236 4.362344411133384, -5.624998658112493 4.800392361058798, -9.316404907598319 4.62520548641869, -7.29492053288002 -2.927082610924476, 8.701173214893267 -0.8189537900473602, 9.667970089758358 3.573231060257538, 5.537110715333732 4.362344411133384, 2.988282590688516 6.287501448673132)) 
SRID=4326;POLYGON ((2.379232127237539 48.99532183070828, 1.835408885125764 48.778601581576, 2.489095408472194 48.61544474629894, 2.780233103744227 48.87985458449839, 2.379232127237539 48.99532183070828)) 
SRID=4326;POLYGON ((4.921880363732911 48.86996904931716, 13.00781786260736 44.28238994198036, -8.08593213445636 32.47943349940858, -25.31249463205829 49.55890707900826, 5.364418038408538e-06 58.4058966101036, -8.789057134358529 49.10068218084409, 4.921880363732911 48.86996904931716)) 
SRID=4326;POLYGON ((10.10742321469805 59.8969527006269, 16.34765758882955 60.31310053764656, 15.02929821401315 57.87662999493084, 12.39257946438035 57.92333496310473, 10.10742321469805 59.8969527006269))

따라서 저장된 것이 다각형이라고 확신하지만 검색시 맵 템플릿에 그것을 그리는 것이 문제입니다 ...


  • 답변 # 1

    템플릿 내에서 전단지 다각형 문서를 사용해야합니다.
    이 작업을하려면 다음 두 가지가 필요합니다.

    <올>

    폴리곤 좌표 목록 :

    lst_coords = [[point.x, point.y] for point in shop_object.city]
    
    

    이렇게하면 목록/좌표 쌍 목록이 나타납니다.

    리플렛 다각형에 좌표 목록을 삽입하십시오 :

    L.polygon(lst_coords, {color: 'red'}).addTo(map);
    
    

    이제 예제에 위의 내용을 적용하겠습니다 :

    <올>

    와이즈 비즈 추가  좌표 목록을 반환하기 위해 모델로 (단지 편의상) :

    property
    
    

    위에 템플릿에 통합 :

    class Shop(models.Model):
        name = models.CharField(max_length=100)
        location = models.PointField()
        address = models.CharField(max_length=100)
        city = models.PolygonField()
        @property
        def city_coords_list(self):
             return [[point.x, point.y] for point in self.city]
    
    
    <script type="text/javascript"> function map_init(map, options) { {% for each_model in loca %} L.polygon( {{ each_model.city_coords_list }}, {color: 'red'} ).bindPopup({{ each_model.name }}).addTo(map) {% endfor %} // Find a way to fit the map accordignly (search the docs) ; }

  • 이전 javascript - Google지도를 사용하여 불규칙한 동심원 그리기
  • 다음 email - php 메일 기능 - sendmail mta :우분투 :오류