Ale*_*lex 3 google-maps-api-3 angularjs leaflet mapbox angular-leaflet-directive
我很困惑哪一个使用.我目前正在使用角度映射框 - > http://inkblot.io/angular-mapbox,但是文档没有解释我想要的某些功能,比如如何将API调用中的标记与线连接以及如何将地图置于中心在标记生成时.Angular Mapbox使用$ scope来渲染数据非常棒,但是我想切换到其他东西才能拥有其他功能.有没有人知道一个简单的解决方案,使用带有$ scope的ngrepeat渲染数据,用线条连接这些标记,并在生成这些标记时使地图居中?
为什么不编写自己的简单指令将map实例传递给控制器范围,这样你就可以充分利用mapbox js api?Angular可用的指令,如你链接的指令,angular-leaflet-directive和angular-google-maps都是如此臃肿和复杂,你最终会得到一个缓慢的应用程序.如果你只是展示一些标记和折线,那就太过分了,会让你陷入困境.此外,在大多数情况下,这些都记录不清,更新且大部分都不完整(到目前为止还没有完整的api报道),在我看来这是一个糟糕的选择.(充分尊重这些项目的开发者)
它可以像这样简单,模板:
<mapbox callback="callback"></mapbox>
Run Code Online (Sandbox Code Playgroud)
对于指令:
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);
}
};
}
]);
Run Code Online (Sandbox Code Playgroud)
现在在你的控制器中使用它:
angular.module('app').controller('rootController', [
'$scope',
function ($scope) {
$scope.callback = function (map) {
map.setView([51.433333, 5.483333], 12);
};
}
]);
Run Code Online (Sandbox Code Playgroud)
该指令初始化地图,将地图实例传递回控制器范围,你可以随心所欲地做任何你喜欢的事情.我在Plunkr上有一个工作示例,但Mapbox使示例键和映射无效.我有一个完整的工作示例,但它不使用Mapbox,它使用Leaflet,但原理保持不变,你可以在这里测试它:http://plnkr.co/edit/gax5NL7DX2PWmJXKP9YD?p = preview
找到了mapbox示例,请记住它不会加载tile,因为令牌已过期或已被删除:http://plnkr.co/edit/OpVhUKLryW8rbEtJ8jgh?p = preview
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |