使用Django在传单Javascript中显示PostGis几何

问题描述

遵循传单快速入门指南
https://leafletjs.com/examples/quick-start/

我查询一个world_border,它具有一个几何字段mpoly(国家的外部形状)和一个纬度/经度字段(中心位置),我想在html网站上显示。我已经能够显示显示纬度/经度点。但是,我如何(聪明地)形象化Multipoligon?

将{{world_border.mpoly}}添加到map.html打印:

RID=4326;MULTIPOLYGON (((8.710255 47.696808,8.678595 47.693344,... )))

这是表格的外观(pgAdmin)

SELECT * FROM world_worldborder WHERE name Like '%Germany%';

显示 https://i.stack.imgur.com/wPp6u.png

views.py

from django.contrib.gis.geos import Point
from django.shortcuts import render
from .models import WorldBorder

def map(request):
  pnt = Point(9.003889,48.661944)
  world_border = WorldBorder.objects.get(mpoly__intersects=pnt)
  return render(request,'world/map.html',{'world_border':world_border})

map.html

{% extends 'home/base.html'%}
{% block content %}

<!-- Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
  integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
  crossorigin=""/>

<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
  integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
  crossorigin=""></script>

<div id="mapid" class="w-100 h-100">

  <script>
    var zoom = 10;
    var lat = {{world_border.lat}}
    var lon = {{world_border.lon}}
    var mymap = L.map('mapid').setView([lat,lon],zoom);

    L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{
      attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a>',subdomains: ['a','b','c']
      }).addTo(mymap);

    var marker = L.marker([lat,lon]).addTo(mymap);
  </script>
</div>
{% endblock %}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...