我正在构建一个在平面图上使用可点击标记和形状的项目。
<leaflet layers="layers" markers="markers" ></leaflet>
标记进展顺利,看起来很简单……</p>
$scope.markers = {};
lodash.each(data.markers, function(marker, i) {
$scope.markers[marker.name] = {
lat : device.map_location[0],
lng : device.map_location[1],
};
});
$scope.$on('leafletDirectiveMarker.click', function (e, args) {
$scope.selected_marker = $scope.markers[args.modelName];
});
但是这些层似乎没有像这样工作。我对将层添加到 $scope.layers 的代码(典型的 Angular 代码)没有任何运气。唯一有效的就是这种非 Angular 的混乱……</p>
$scope.layers = {
overlays: {
spaces: {
name: 'Spaces',
type: 'group',
},
}
};
leafletData.getLayers().then(function(layers) {
lodash.each(data.spaces, function(space, i) {
layers.overlays.spaces.addLayer(L.geoJson({
type: 'Feature',
geometry: {
type: "Polygon",
coordinates: [space.map_area]
},
}));
});
});
是否有更好/更智能的方式将绘制的项目添加到地图?以及如何将点击事件绑定到图层?还是 Leaflet 中的形状只是愚蠢的、非交互式的装饰?