【问题标题】:how to get lat/lng info for clicks in leaflet map in an angular ui如何在角度 ui 中获取传单地图中点击的纬度/经度信息
【发布时间】:2014-04-05 11:21:41
【问题描述】:

我正在使用 Angular.js 和 Leaflet 构建一个非常基本的 Web 应用程序。

我正在尝试从地图上的点击中获取 lat/lng 信息,但我无法找到任何有关将事件处理程序从 Leaflet 集成到 Angular 的文档。

如果有人能指出我正确的方向,我会很兴奋。

下面的代码:

app.controller("eventcrtl", [ '$scope', function($scope) {
    $scope.$on('leafletDirectiveMap.click', function(event){
      console.log(event.latlng);
    });
}]);

没用

【问题讨论】:

    标签: angularjs angular-ui leaflet


    【解决方案1】:

    要处理事件,首先在你的作用域上定义一个事件对象...

    angular.extend($scope, {
        events: {
          map: {
            enable: ['click', 'drag', 'blur', 'touchstart'],
            logic: 'emit'
          }
        },
        ...
    

    并将其添加到您的传单元素中。

    <leaflet event-broadcast="events"></leaflet>
    

    然后,您可以在点击处理程序的 args 参数中访问纬度和经度:

    $scope.$on('leafletDirectiveMap.click', function(event, args){
        console.log(args.leafletEvent.latlng);
    });
    

    这是一个工作演示:http://plnkr.co/PxRDhz6S5Svsg9FG4VRk

    【讨论】:

    • 这是完美的。谢谢你!是否有理由扩展 $scope,而不是直接分配它?
    • 我不知道。这就是我派生出的原始演示的编写方式。
    • 至少在 0.7.6 中,事件似乎默认启用,因此不需要 event-broadcast 属性(尽管明确定义您想要的事件可能是个好主意)。
    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2011-10-11
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多