【发布时间】:2015-11-30 12:55:12
【问题描述】:
我正在 AngularJS 中构建一个应用程序,该应用程序使用 LeafletJS 与地图进行交互,提供不同的可能交互,这些交互在我所谓的阶段之间分开。对于每个阶段,都有一个UIRouter 状态及其控制器和模板。
我目前通过服务提供传单功能。这个想法是让该服务初始化一个传单地图并提供对状态控制器的一些有限访问。因此,这些控制器将调用诸如setupMarkersInteractions 之类的服务函数来设置回调,以便在地图上放置标记。
但是,我在通过 Leaflet 的leaflet.map() 函数初始化地图时遇到了问题,即:Error: Map container not found。这与 Leaflet 无法找到与地图关联的 HTML 元素有关。
目前,我正在有点这样做:
function mapService() {
var map;
return {
initializeMap : initializeMap,
setupMarkersInteractions : setupMarkersInteractions
};
function initializeMap() {
map = leaflet.map('map');
}
function setupMarkersInteractions() {
map.on('click', markerPlacementCallback);
}
}
initializeMap 函数告诉leaflet.map 查找带有id='map' 的HTML 元素,该元素在状态模板上声明。
现在,对于实际问题,这是否与某种 AngularJS 服务无法访问 HTML 模板有关?我找不到任何关于此事的信息,但我认为服务不直接访问视图是有意义的...
如果是,我应该探索什么样的解决方法?我已经查看了leaflet-directive,但它似乎没有提供以我想要的灵活性添加和删除自定义回调的可能性(例如,当我使用 Leaflet-Freedraw 添加免费绘图功能时,事情变得复杂了) .
我考虑过直接使用 leaflet.map 和 HTMLElement 参数作为元素,但我仍然无法使其工作 - 尽管有可能我没有通过应有的内容。
【问题讨论】:
标签: angularjs leaflet angular-leaflet-directive