Angular Mapbox vs Angular Leaflet Mapbox vs Angular google 地图

Angular Mapbox vs Angular Leaflet Mapbox vs Angular google maps

我很困惑该使用哪一个。我目前正在使用 angular mapbox --> http://inkblot.io/angular-mapbox ,但文档没有解释我想要的某些功能,例如如何将来自 API 调用的标记与线连接以及如何获取地图生成时以标记为中心。 Angular Mapbox 非常适合使用 $scope 来呈现数据,但我正在考虑切换到其他东西以拥有其他功能。有谁知道一个简单的解决方案,即使用带有 $scope 的 ngrepeat 呈现数据,用线连接这些标记,并在生成这些标记时使地图居中?

为什么不编写自己的简单指令,将地图实例传递到控制器范围,以便充分利用 mapbox js api?可用于 Angular 的指令,如您链接的指令,angular-leaflet-directive 和 angular-google-maps 非常臃肿和复杂,您将结束从一个缓慢的应用程序开始。如果您只显示几个标记和多段线,那就太过分了,会让您陷入困境。再加上这些在大多数情况下都缺乏记录、更新并且大部分不完整(到目前为止还没有完整的 api 报道),在我看来这是一个糟糕的选择。 (尊重这些项目的开发者)

可以这么简单,模板:

<mapbox callback="callback"></mapbox>

对于指令:

angular.module('app').directive('mapbox', [
  function () {
    return {
      restrict: 'EA',
      replace: true,
      scope: {
        callback: "="
      },
      template: '<div></div>',
      link: function (scope, element, attributes) {
        L.mapbox.accessToken = 'YOUR PUBLIC MAPBOX KEY';
        var map = L.mapbox.map(element[0], 'YOUR MAP PROJECT ID');
        scope.callback(map);
      }
    };
  }
]);

现在在你的控制器中使用它:

angular.module('app').controller('rootController', [
  '$scope',
  function ($scope) {
    $scope.callback = function (map) {
      map.setView([51.433333, 5.483333], 12);
    };
  }
]);

该指令初始化地图,将地图实例传递回您的控制器范围,您可以继续做任何您喜欢的事情。我在 Plunkr 上有一个工作示例,但 Mapbox 使示例键和映射无效。我有一个完整的工作示例,但它不使用 Mapbox,它使用 Leaflet,但原理保持不变,你可以在这里测试它:http://plnkr.co/edit/gax5NL7DX2PWmJXKP9YD?p=preview

找到 mapbox 示例,请记住它不会加载图块,因为令牌已过期或已被删除:http://plnkr.co/edit/OpVhUKLryW8rbEtJ8jgh?p=preview