我正在 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
查找带有 的 HTML 元素id='map'
,该元素在状态模板上声明。
现在,对于实际问题,这是否与某种AngularJS 服务无法访问 HTML 模板有关?我在这件事上找不到任何东西,但我认为服务不直接访问视图是有意义的......
如果是,我应该探索什么样的解决方法?我已经研究过了leaflet-directive
,但它似乎没有提供以我想要的灵活性添加和删除自定义回调的可能性(例如,当我使用 Leaflet-Freedraw 添加免费绘图功能时,事情变得复杂了)。
我考虑leaflet.map
过直接使用HTMLElement
元素的参数,但我仍然无法使其工作 - 尽管有可能我没有通过应该传递的内容。