【问题标题】:ASP.net Core Dynamically Adding markers on Leaflet Map [closed]ASP.net Core 在传单地图上动态添加标记[关闭]
【发布时间】:2020-10-28 00:27:41
【问题描述】:

如何在网站上使用 ASP.net Core MVC 和 SQL Server 在 Leaflet Map 上动态显示标记?

【问题讨论】:

标签: javascript c# sql-server asp.net-core leaflet


【解决方案1】:

这是一个完整的演示,如下所示:

型号:

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string LName { get; set; }
}

查看(注:data[i].propertyName,属性名应为camel case):

@model IEnumerable<Test>
<div id="map" style="height: 440px; border: 1px solid #AAA;"></div>

@section Scripts
{
    <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>

    <script type="text/javascript">
        $(document).ready(function () {           
            var map = L.map('map', {
                center: [46.674590, 9.276266],
                minZoom: 4,
                zoom: 6
            });
            $.ajax({
                type: "POST",
                url: '/Tests/Index',
                success: function (data) {
                        var result = JSON.stringify(data);

                        for (var i = 0; i < result.length; ++i) {
                            var popup = '<b>Name:</b> ' + data[i].id +
                                '<br/><b>Latitude:</b> ' + data[i].name +
                                '<br/><b>Longitude:</b> ' + data[i].lName;

                            L.marker([data[i].name, data[i].lName])
                                .bindPopup(popup)
                                .addTo(map);
                        }
                       },
                error: function (xhr) {
                    alert("Error has occurred..");
                }
            });
 
            L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
                attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
            }).addTo(map);
        });
    </script>
}

控制器:

public class TestsController : Controller
{
    private readonly YourDbContext _context;

    public TestsController(YourDbContext context)
    {
        _context = context;
    }

    // GET: Tests
    public IEnumerable<Test> Index()
    {
        return _context.Test.ToList();
    }
}

数据库:

结果:

【讨论】:

  • 嗨,当我运行代码时,它只显示数据库中的数据列表,而不是地图本身。我错过了什么?
  • 不确定你的剃刀视图如何。请在我的剃刀视图中使用js和css文件。我使用默认的_Layout.cshtml。它包含默认的js和css文件。
  • 您好,确认一下,是 Razor View 'Index' 的名称吗?
  • 是的。就在我身边。
  • 谢谢!它现在正在工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多