如何将 Angular JS 与 Leaflet.js 一起使用

Posted

技术标签:

【中文标题】如何将 Angular JS 与 Leaflet.js 一起使用【英文标题】:How to use Angular JS with Leaflet.js 【发布时间】:2014-05-18 18:09:38 【问题描述】:

我正在使用 Node.JS/Leaflet.js 开发仪表板。几周前我开始学习 Angular js。但我在我的项目中处于中等阶段。

我正在使用以下工具构建交互式地图仪表板:

Node.JS/Express.js 在后端处理数据 Leaflet.js 做地图可视化 d3.js 等其他库。

现在,我正在尝试将小部件添加到我的仪表板,在其中单击点并使用 Node.js 从数据库中获取与每个点相关的信息。

我想简化我的问题并考虑这个例子。 http:jsfiddle.net/8QHFe/128/

当我将鼠标悬停在形状上时,我会得到一个与地图上每个多边形/点相关的图表。

我很困惑!我的问题是:

我是否应该重新创建应用程序以将 Leaflet 嵌入到 Angular Js 代码中,例如此示例 link 或使用 angular leaflet directive。它读到它还不是一个稳定的库。 在这种情况下使用 Angular.js 是不是最好的选择?

【问题讨论】:

【参考方案1】:

所以这是一个很好的问题。我经常很难理解如何将映射包实现到 Angular 中。 The Plunker below 展示了一种方法,但我不确定它是否是“Angular Way”。我很想听听其他人的意见。

在我上一个地图应用程序中,我没有使用AngularLeaflet,因为我有太多的自定义要做。 (例如,根据某些变量打开和关闭 WMS 图层、在缩放级别上交换底图、使用 ESRI 图层等)。也就是说,它看起来是一个很棒的项目,我期待着使用它。

Plunker Example

我有一个地图控制器和两个服务。

    MapCtrl(地图的控制器逻辑) MapService 将与本地存储通信并保存最后一个视图以获得更好的用户体验 RecordService 将使您的 ajax 数据显示在地图上

那么 Angular 是最佳选择吗?

谁知道呢,不管我多么喜欢使用 Angular,我也看不出任何理由。关于我展示的方式最困难的事情是无法在弹出窗口中使用 angular 2-way binding。虽然这可以通过在不分叉 AngularLeaflet 项目的情况下大量自定义地图来抵消......(也许我只是太懒了)。

让我知道你的想法?

【讨论】:

非常感谢您的出色回答。我真的很困惑,我不知道使用AngularLeaflet是否是最好的选择,它简化了工作,但我害怕受到库的能力的限制。我期待听到其他有经验的人的意见。 @Cory 您的 Plunker 示例已被多次编辑,当前版本不再有效。你指的是哪个版本? 我恢复到我回答问题时的状态。由于 API 密钥无效,它仍然无法工作;虽然它有效。我所做的指令版本是at this forked plunker

以上是关于如何将 Angular JS 与 Leaflet.js 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 DOM 对象获取 leaflet.js 实例?

在Angular5 app中的leaflet弹出窗口中调用zone.run

映射一个二维数组数组以生成leaflet.js标记

Leaflet 在地图中显示 .mbTiles 文件

如何将完成的多边形点leaflet.draw保存到mysql表

如何将 D3.js 与 Renderer API 与 Angular 2 集成